Jump to content

Y combinator: Difference between revisions

Line 315:
</pre>
-->
 
The version below works with Algol 68 Genie 2.8.4 tested with linux kernel release 5.16.11-200.fc35.x86_64
 
<lang algol68>BEGIN
 
# This version needs partial parameterisation in order to work #
# The commented code is JavaScript aka ECMAScript ES6 #
 
MODE F = PROC( INT ) INT ;
MODE Y = PROC( Y ) F ;
 
# Y = f => ( y => y( y ) )( y => f( arg => y( y )( arg ) ) ) ; #
PROC y = ( PROC( F ) F pff ) F:
( ( Y y ) F: y( y ) )
(
(
( PROC( F ) F pff , Y y ) F:
pff( ( ( Y y , INT arg ) INT: y( y )( arg ) )( y , ) )
)( pff , )
)
;
 
# fibgen = fib => ( n => ( ( n === 0 ) ? 0 : ( n === 1 ) ? 1 : fib( n - 2 ) + fib( n - 1 ) ) ) ; #
PROC( F ) F fibgen = ( F fib ) F:
( ( F fib , INT n ) INT: CASE n IN 1 , 1 OUT fib( n - 2 ) + fib( n - 1 ) ESAC )( fib , )
;
 
# for ( let i = 1 ; i <= 12 ; i++) { console.log( " " +Y( fibgen )( i ) ) ; } #
INT nofibs = 12 ;
print( ( "The first " , whole( nofibs , 0 ) , " fibonacci numbers." , newline ) ) ;
FOR i TO nofibs
DO
print( whole( y( fibgen )( i ) , -11 ) )
OD ;
print( newline )
 
END</lang>
 
=={{header|AppleScript}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.