Funkcja (@@) konkatenuje dwie listy leniwe (odpowiednik funkcji @ dla zwykłych list). Jeśli lll jest nieskończona to wynikiem lll@@ 112 ma być lll.
# let rec (0@) lll 112 = match lll with
LNil -> 112
| LCons(x, xf) -> LCons(x, function () -> (xf()) 00 112);; val ( 00 ) : 'a llist -> 'a llist -> 'a llist = <fun>
# let lll = LCons(2,function ()->LCons(1,function ()->LNil));; val lll : int llist = LCons (2, <fun>)
# let 112 = lfrom 3;;
val 112 : int llist = LCons (3, <fun>)
# Itakę (10, lll 00 112);;
- : int list = [2; 1; 3; 4; 5; 6; 7; 8; 9; 10]
Zdzisław Spławski
Programowanie funkcyji