Y combinator: Difference between revisions
m
→ALGOL 68
m (→{{header|Wren}}: Changed to Wren S/H) |
m (→ALGOL 68) |
||
Line 318:
The version below works with [[ALGOL 68 Genie]] 3.
N.B. 4 warnings are issued of the form
Line 339:
Y_combinator =
func_gen => ( x => x( x ) )( x => func_gen( arg => x( x )( arg ) ) )
;▼
#
PROC y combinator = ( PROC( F ) F func gen ) F:
(
▲ (
func gen(
▲ )( func gen , )
▲ )
;
#
fac_gen = fac => (n => ( ( n === 0 ) ? 1 : n * fac( n - 1 ) ) )
#
PROC fac gen = ( F fac ) F:
;
#
factorial = Y_combinator( fac_gen )
#
Line 372 ⟶ 370:
#
fib_gen =
fib =>
#
PROC fib gen = ( F fib ) F:
(
( F fib , INT n ) INT: CASE n + 1 IN 0 , 1 OUT fib( n - 2 ) + fib( n - 1 ) ESAC▼
( F fib , INT n ) INT:
)( fib , )
;
#
fibonacci = Y_combinator( fib_gen )
#
Line 389:
#
#
INT nofacs = 12 ;
printf( ( $ l , "
FOR i TO nofacs
DO
printf( ( $ " " , g( 0 )
OD ;
print( newline ) ;
#
#
INT nofibs = 12 ;
printf( (
, nofibs
) )
▲;
FOR i TO nofibs
DO
printf( ( $ " " , g( 0 )
OD ;
print( newline )
END</syntaxhighlight>
|