Jump to content

Y combinator: Difference between revisions

Y combinator in FreeBASIC
(Y combinator in FreeBASIC)
Line 2,821:
y execute . 55 ok
</lang>
 
=={{header|FreeBASIC}}==
FreeBASIC does not support nested functions, lambda expressions or functions inside nested types
<lang freebasic>Function Y(f As String) As String
Y = f
End Function
 
Function fib(n As Long) As Long
Dim As Long n1 = 0, n2 = 1, k, sum
For k = 1 To Abs(n)
sum = n1 + n2
n1 = n2
n2 = sum
Next k
Return Iif(n < 0, (n1 * ((-1) ^ ((-n)+1))), n1)
End Function
 
Function fac(n As Long) As Long
Dim As Long r = 1, i
For i = 2 To n
r *= i
Next i
Return r
End Function
 
Function execute(s As String, n As Integer) As Long
Return Iif (s = "fac", fac(n), fib(n))
End Function
 
Sub test(nombre As String)
Dim f As String: f = Y(nombre)
Print !"\n"; f; ":";
For i As Integer = 1 To 10
Print execute(f, i);
Next i
End Sub
 
test("fac")
test("fib")
Sleep</lang>
{{out}}
<pre>fac: 1 2 6 24 120 720 5040 40320 362880 3628800
fib: 1 1 2 3 5 8 13 21 34 55</pre>
 
 
=={{header|GAP}}==
2,169

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.