[Haskell-cafe] lifting restrictions on defining instances
porges at porg.es
porges at porg.es
Fri Jul 17 23:08:04 EDT 2009
[Ack, missed the reply-all button...]
This was part of my motivation behind the 'removing polymorphism from Functor' thing... to select a different parameter we'd essentially need type-level lambdas... I'll use 'Λ' (capital lambda) for it:
instance Functor (Λ a. X a b) where
fmap f (X a b) = X (f a) b
We don't have these [1], but we *do* have type families, which are kind of like type-level lambdas turned 'inside out' (at least to my eyes), so my idea was to separate this out:
type family Point :: *
type instance Point (X a b) = a
class Functor f where
fmap :: (Point f -> Point f) -> f -> f
Here I began to run into problems which are a bit irrelevant to this discussion :)
[1]: I'm not sure of the exact connection, but see, e.g. Oleg's construction of computation at the type level (http://okmij.org/ftp/Haskell/TypeLC.lhs), wherein he notes the "primary role of type application rather than that of abstraction".
- George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 908 bytes
Desc: OpenPGP digital signature
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20090717/e22b84fd/signature.bin
More information about the Haskell-Cafe
mailing list