I would be so tempted to name the variable 'ity' instead of 'v'.
Re:Algebraic Data Types for C99
by Iceland_jack on Friday May 10, 2024 @08:31AM
(#40318184)
By floating the forall., we get another representation type for Void (forall a. a) and `absurd' is one half of that isomorphism :)
absurd :: Void -> (forall a. a)
drusba :: (forall a. a) -> Void
drusba void = void @Void
This is possible to achieve (or hack your way through, if you will) by parameterizing the type and using a nullary type (a type which is impossible to have) to exclude specific cases of a sum type. In Haskell this would look like this:
where `absurd :: forall a. Void -> a` "if you give me something you can't ever have, I will give you anything in return".