Interactive FP
Version of implementation Interactive FP of programming language FPThis one probably has only one version.
Examples:
Factorial - FP (19):
This example defines four functions — two of necessity, and two for readability. All of them accept scalar values for input; seq returns a sequence of scalars, and the other three return individual scalars.
-
zerochecks whether its argument is equal to zero; -
decdecrements its argument; -
seqreturns<0>if its argumentxis equal to zero, andseq, applied to(x-1), withxappended to right otherwise (if we unwind this recursive definition, we’ll get simply the sequence of values<0 1 ... x>). -
factorialreturns 1 if its argumentxis equal to zero, andfactorial, applied to(x-1), multiplied byxotherwise.
The last line of the example applies factorial to each element of sequence, obtained by applying seq to 16. Note that all math operations produce floating point values, so the actual output will look like this:
< 1 1.0 2.0 6.0 24.0 120.0 720.0 5040.0 40320.0 362880.0 3628800.0 3.99168E7 4.790016E8 6.2270208E9 8.7178289E10 1.30767428E12 2.09227885E13 >
{ zero ( = @ [id, %0] ) }
{ dec ( - @ [id, %1] ) }
{ seq ( zero -> %<0> ; apndr @ [ seq @ dec , id ] ) }
{ factorial ( zero -> %1 ; * @ [id, factorial @ dec ] ) }
&factorial @ seq:16
Fibonacci numbers - FP (20):
This example works in a same way as the factorial one, but without readability functions added.
{ seq ( = @ [id, %1] -> %<1> ; concat @ [ seq @ - @ [id, %1] , [id] ] ) }
{ fibonacci ( < @ [id, %3] -> %1 ; + @ [ fibonacci @ - @ [id, %1], fibonacci @ - @ [id, %2] ] ) }
&fibonacci @ seq:16
Comments
]]>blog comments powered by Disqus
]]>