Hi,

Am Samstag, den 28.01.2012, 23:34 -0500 schrieb wren ng thornton:
> * Perhaps the most useful is that it packages up Matt Helige's classic 
> multicomposition trick[1]. These combinators allow you to easily modify 
> the types of a many-argument function with syntax that looks like giving 
> type signatures. For example,
> 
>  > foo    :: A -> B -> C
>  >
>  > albert :: A -> X
>  > beth   :: B -> Y
>  > carol  :: C -> Z
>  >
>  > bar :: X -> Y -> Z
>  > bar = foo $:: albert ~> beth ~> carol
> 
> I've found this to be especially helpful for defining non-derivable type 
> class instances for newtypes since it both abstracts away the plumbing 
> and also makes explicit what you mean.

Even without looking at the definition of $:: and ~>, I have doubts
about the existence of such a bar function (it calls foo, which needs an
A, but it is not given an A and no used function produces one; albert
only consumes one).

Maybe you mean:

        foo    :: A -> B -> C
        
        albert :: X -> A
        beth   :: Y -> B
        carol  :: C -> Z
         
        bar :: X -> Y -> Z
        bar = foo $:: albert ~> beth ~> carol

Greetings from POPL,
Joachim


-- 
Joachim "nomeata" Breitner
  m...@joachim-breitner.de  |  nome...@debian.org  |  GPG: 0x4743206C
  xmpp: nome...@joachim-breitner.de | http://www.joachim-breitner.de/

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to