Y combinator: Difference between revisions
→{{header|R}}
(Add bruijn) |
|||
Line 4,902:
=={{header|R}}==
<syntaxhighlight lang="r">
#' Y = λf.(λs.ss)(λx.f(xx))
#' Z = λf.(λs.ss)(λx.f(λz.(xx)z))
}</syntaxhighlight>▼
#'
fixp.Y <- \ (f) (\ (x) (x) (x)) (\ (y) (f) ((y) (y))) # y-combinator.
<syntaxhighlight lang="r">fac <- function(f) {▼
fixp.Z <- \ (f) (\ (x) (x) (x)) (\ (y) (f) (\ (...) (y) (y) (...))) # z-combinator also.
Y-combinator test:
}</syntaxhighlight>▼
<syntaxhighlight lang="r">
fac.y <- fixp.Y (\ (f) \ (n) if (n<2) 1 else n*f(n-1))
fac.y(9) # [1] 362880
fib.y <- fixp.Y (\ (f) \ (n) if (n <= 1) n else f(n-1) + f(n-2))
fib.y(9) # [1] 34
Z-combinator test:
fac.z <- fixp.Z (\ (f) \ (n) if (n<2) 1 else n*f(n-1))
fac.z(9) # [1] 362880
fib.z <- fixp.Z (\ (f) \ (n) if (n <= 1) n else f(n-1) + f(n-2))
fib.z(9) # [1] 34
</syntaxhighlight>
You can verify these codes by [https://shinylive.io/r/editor/#code=NobwRAdghgtgpmAXGAZgSwB5wCYAcD2aEALgHQBOYANGAMb4lwlJgDEA5AAQCanAvJ0DdwClIAKQQGdSEiQEpxGUilEYMs2QB0IHTgC1+QkeKkz5gxcsEAvMatlX1WnVq3oMuUrwA8AWk4aNTlEUWSCAoLUI0JV1MMDRAE9okKDE6KTY1k4En3oYACMiKGJ8clJXTA99X394lNFwmKio6MakoPrG0m703qDu0nVQrKtc-AKikvJOKAAbCXxyiCcuAFcJOBcIFChaUgTOGrcPXga60MaIULQUIIgvACZQgEZOOHm4TggAKmUIH2ejm2u32ogAnMNOMBngBdTgAZgAbA8ABwogAMW3Q+X2hz8x08cQ6F3iV04NzuhwEgK+bw+nD+ANCAGoGaJ-k9NNs0DiEuDIdC4fCACxbVwgqx4hmVUj6M7E2p3a63dmPF50jZfX7splcnZ7Kz8zhZQUI5FozHLbk4yVHGVyxopS7KyleamhCAaz6Mmmsxmcio2o0m2EI0UQMAAXxhQA here]
=={{header|Racket}}==
|