June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
18
Task/Y-combinator/Elm/y-combinator.elm
Normal file
18
Task/Y-combinator/Elm/y-combinator.elm
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import Html exposing (text)
|
||||
|
||||
type Mu a b = Roll (Mu a b -> a -> b)
|
||||
|
||||
unroll : Mu a b -> (Mu a b -> a -> b)
|
||||
unroll (Roll x) = x
|
||||
|
||||
fix : ((a -> b) -> (a -> b)) -> (a -> b)
|
||||
fix f = let g r = f (\v -> unroll r r v)
|
||||
in g (Roll g)
|
||||
|
||||
fac : Int -> Int
|
||||
fac = fix <|
|
||||
\f n -> if n <= 0
|
||||
then 1
|
||||
else n * f (n - 1)
|
||||
|
||||
main = text <| toString <| fac 5
|
||||
Loading…
Add table
Add a link
Reference in a new issue