[Haskell-cafe] Partial type family application

Jan Stolarek jan.stolarek at p.lodz.pl
Wed Apr 26 15:05:11 UTC 2017


mniip, you might want to take a look at a paper Richard Eisenberg and I wrote together in 2014:

Eisenberg, R. A., and Stolarek, J.: Promoting Functions to Type Families in Haskell, ACM SIGPLAN 
Notices 49(12):95-106 (originally published at: Haskell Symposium 2014, Göteborg, Sweden)

Janek


Dnia środa, 26 kwietnia 2017, mniip napisał:
> Oops, got cut off :S
>
> We could then write stuff like
>
>     type family Foldr (f :: k ~> l ~> l) (z :: l) (xs :: [k]) :: l where
>         Foldr f z '[] = z
>         Foldr f z (x ': xs) = f x (Foldr f z xs)
>
>     type family Flip (f :: k ~> l ~> m) (x :: l) (y :: k) :: m where
>         Flip f x y = f y x
>
>     -- Lift a type constructor into a type family
>     type family Apply (con :: k -> l) (x :: k) :: l where
>         Apply con x = con x
>
>     type family (.) (f :: l ~> m) (g :: k ~> l) (x :: k) :: l where
>         (.) f g x = f (g x)
>
>     stuff :: Foldr (Flip (Apply . Apply (,))) () '[Int, String, Char]
>     stuff = ((((), 'x'), "moo"), 3)
>
> This idea is very fresh, and I certainly haven't explored all the
> aspects, so I would welcome constructive (and intuitionistic) criticism
> regarding both usefulness and mathematical soundness of this.
>
> --mniip
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.


 

--- 
Politechnika Łódzka 
Lodz University of Technology 

Treść tej wiadomości zawiera informacje przeznaczone tylko dla adresata. 
Jeżeli nie jesteście Państwo jej adresatem, bądź otrzymaliście ją przez pomyłkę 
prosimy o powiadomienie o tym nadawcy oraz trwałe jej usunięcie. 

This email contains information intended solely for the use of the individual to whom it is addressed. 
If you are not the intended recipient or if you have received this message in error, 
please notify the sender and delete it from your system. 




More information about the Haskell-Cafe mailing list