Lambda-Funktion (anonym)

Aufgabe: Wir wollen den Einsatz der Lambda-Funktion kennenlernen.

Code 01

1/* A={1,2,3} und B={3,4}. Man bestimme die Relation R1 auf A x B mit y=x+2 ! */;
A:{1,2,3};
B:{3,4};
AxB:cartesian_product(A,B)$
R1:subset(AxB,lambda([e],is(e[2]=e[1]+2)));

Grafik (Produktmenge):
produktmenge1

Code 02

2/* A={1,2,3,4,5,6,7,8,9,10} und B={-1,-2,-3,-4,-5,-6,-7,-8,-9,-10}.
Man bestimme die Relation R2 auf A x B mit x+2y-1=0 ! */;
A:{1,2,3,4,5,6,7,8,9,10};
B:{-1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
AxB:cartesian_product(A,B)$
R2:subset(AxB,lambda([e],is(e[1]+2*e[2]-1=0)));

Code 03

3/* A={1,2,3,4,5,6,7,8,9,10} und B={-1,-2,-3,-4,-5,-6,-7,-8,-9,-10}.
Man bestimme die Relation R3 auf A x B mit x+2y-1>0 ! */;
A:{1,2,3,4,5,6,7,8,9,10};
B:{-1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
AxB:cartesian_product(A,B)$
R3:subset(AxB,lambda([e],is(e[1]+2*e[2]-1>0)));

Code 04

4/* Augensumme beim n-maligen Würfeln > k */;
n:10;
k:7;
W:setify(makelist([random(6)+1,random(6)+1],i,1,n));
A:subset(W,lambda([e],is(e[1]+e[2]>k)));
p:cardinality(A)/n,numer;

Code 05

5/* Augensumme beim n-maligen Würfeln > k */;
n:10;
k:7;
E:{1,2,3,4,5,6};
S:cartesian_product(E,E);
A:subset(S,lambda([e],is(e[1]+e[2]>k)));
p:cardinality(A)/cardinality(S),numer;