
Combinator birds in Clojure - llambda
https://github.com/fogus/skiing/blob/master/src/me/fogus/skiing.clj
======
csl
A relevant read is _To Dissect a Mockingbird: A Graphical Notation for the
Lambda Calculus with Animated Reduction_ at
<http://dkeenan.com/Lambda/index.htm>

~~~
sabalaba
Another good read is An Introduction to Functional Programming Through Lambda
Calculus, <http://www.macs.hw.ac.uk/~greg/books/>

------
Tyr42
Some of the comparisons to Haskell were in error. I submitted a pull request
that fixed them.

~~~
fogus
Thank you for that. I will now find out the real implementations of Haskell's
pure, <$>, and join.

~~~
Tyr42
Well, here's the type signatures for each:

    
    
        pure (== return) :: (Applicative f) => a -> f a
        <$> (== fmap) :: (Functor f) => (a -> b) -> (f a -> f b)
        join :: (Monad m) => m (m a) -> m a
    

All of these are polymorphic, and example in the case of lists would be

    
    
        pure x = [x]
        odd <$> [1,2,3] == [True, False, True]
        join [[1,2], [3], [4,5]] = [1,2,3,4,5]

