A10B1(pascal @a1)A2(+ 1 @a1)C1@b1:b15B2(pascal @a2)A3(+ 1 @a2)B3(pascal @a3)A4(+ 1 @a3)B4(pascal @a4)A5(+ 1 @a4)B5(pascal @a5)A6(+ 1 @a5)B6(pascal @a6)A7(+ 1 @a6)B7(pascal @a7)A8(+ 1 @a7)B8(pascal @a8)A9(+ 1 @a8)B9(pascal @a9)A10(+ 1 @a9)B10(pascal @a10)A11(+ 1 @a10)B11(pascal @a11)A12(+ 1 @a11)B12(pascal @a12)A13(+ 1 @a12)B13(pascal @a13)A14(+ 1 @a13)B14(pascal @a14)A15(+ 1 @a14)B15(pascal @a15)(defproc sum-pairs (l) (zip-with add (rest l) (butlast l))) (defproc pascal (n) (cond ((not (integer? n)) (throw (quote error) "argument of pascal must be an integer")) ((< n 0) (throw (quote error) "argument of pascal must be 0 or greater")) ((= n 0) (list 1)) ((= n 1) (list 1 1)) (t (append (list 1) (sum-pairs (pascal (- n 1))) (list 1))))) (assert "first row of pascal triangle" (= (pascal 0) (list 1))) (assert "second row of pascal triangle" (= (pascal 1) (list 1 1))) (assert "third row of pascal triangle" (= (pascal 2) (list 1 2 1))) (assert "fourth row of pascal triangle" (= (pascal 3) (list 1 3 3 1)))pascal-triangleDie Funktion pascal erwartet eine natürliche Zahl als Argument und liefert die damit bezeichnete Zeile des Pascalschen Dreiecks. Die Zählung der Zeilen beginnt bei 0.pascal101010011011000110001011010000000110010011000001100101010111011