Anonymous user
Y combinator: Difference between revisions
m
→{{header|ALGOL 68}}
(→{{header|Quackery}}: added some more commentary) |
|||
Line 316:
-->
The version below works with Algol 68 Genie 2.8.4 tested with Linux kernel release 5.
<lang algol68>BEGIN
Line 328:
# Y_combinator =
PROC y combinator = ( PROC( F ) F func gen ) F:
Line 341:
#
# fac_gen = fac => (n => ( ( n === 0 ) ? 1 : n * fac( n - 1 ) ) ) ; #▼
factorial =
;
#
F factorial =
PROC( F ) F fac gen = ( F fac ) F:▼
y combinator(
( ( F fac , INT n ) INT: IF n = 0 THEN 1 ELSE n * fac( n - 1 ) FI )▼
▲ ( ( F fac , INT n ) INT: IF n = 0 THEN 1 ELSE n * fac( n - 1 ) FI )
( fac , )
)
;
#
# fib_gen = fib => ( n => ( ( n === 0 ) ? 0 : ( n === 1 ) ? 1 : fib( n - 2 ) + fib( n - 1 ) ) ) ; #▼
fibonacci =
Y_combinator(
▲
)
;
#
F fibonacci =
PROC( F ) F fib gen = ( F fib ) F:▼
y combinator(
( ( F fib , INT n ) INT: CASE n IN 1 , 1 OUT fib( n - 2 ) + fib( n - 1 ) ESAC )▼
▲ ( ( F fib , INT n ) INT: CASE n IN 1 , 1 OUT fib( n - 2 ) + fib( n - 1 ) ESAC )
( fib , )
)
;
|