RosettaCodeData/Task/Man-or-boy-test/Ela/man-or-boy-test.ela
2015-11-18 06:14:39 +00:00

15 lines
375 B
Text

open monad io unsafe.cell unsafe.console
liftM2 f m1 m2 = do
x1 <- m1
x2 <- m2
return (f x1 x2)
a k x1 x2 x3 x4 x5 = do
r <- return $ ref k
let b = & do k <- return $ pred (valueof r)
a k b x1 x2 x3 x4
if k <= 0 then liftM2 (+) x4 x5 else b
_ = a 10 (!!1) (!! -1) (!! -1) (!!1) (!!0) >>= (putStr << show) ::: IO
where (!!) f = & return f ::: IO