6.5 One-Line Functions¶
As you use FriCAS, you will find that you will write many short functions function:one-line definition to codify sequences of operations that you often perform. In this section we write some simple one-line functions.
This is a simple recursive factorial function for positive integers.
fac n == if n < 3 then n else n * fac(n-1)
Type: Void
fac 10
3628800 |
Type: PositiveInteger
This function computes 1+1/2+1/3+...+1/n.
s n == reduce(+,[1/i for i in 1..n])
Type: Void
s 50
139432375772240549607593099044504245996706400 |
Type: Fraction Integer
This function computes a Mersenne number, several of which are prime. Mersenne number
mersenne i == 2^i - 1
Type: Void
If you type mersenne, FriCAS shows you the function definition.
mersenne
mersennei==2i-1 |
Type: FunctionCalled mersenne
Generate a stream of Mersenne numbers.
[mersenne i for i in 1..]
[1,3,7,15,31,63,127,255,511,1023,…] |
Type: Stream Integer
Create a stream of those values of i such that mersenne(i) is prime.
mersenneIndex := [n for n in 1.. | prime?(mersenne(n))]
Compiling function mersenne with type PositiveInteger -> Integer
[2,3,5,7,13,17,19,31,61,89,…] |
Type: Stream PositiveInteger
Finally, write a function that returns the n-th Mersenne prime.
mersennePrime n == mersenne mersenneIndex(n)
Type: Void
mersennePrime 5
8191 |
Type: PositiveInteger