equal
deleted
inserted
replaced
73 val singleton: ('a list -> 'b list) -> 'a -> 'b |
73 val singleton: ('a list -> 'b list) -> 'a -> 'b |
74 val yield_singleton: ('a list -> 'c -> 'b list * 'c) -> 'a -> 'c -> 'b * 'c |
74 val yield_singleton: ('a list -> 'c -> 'b list * 'c) -> 'a -> 'c -> 'b * 'c |
75 val apply: ('a -> 'a) list -> 'a -> 'a |
75 val apply: ('a -> 'a) list -> 'a -> 'a |
76 val perhaps_apply: ('a -> 'a option) list -> 'a -> 'a option |
76 val perhaps_apply: ('a -> 'a option) list -> 'a -> 'a option |
77 val perhaps_loop: ('a -> 'a option) -> 'a -> 'a option |
77 val perhaps_loop: ('a -> 'a option) -> 'a -> 'a option |
|
78 val foldl1: ('a * 'a -> 'a) -> 'a list -> 'a |
78 val foldr1: ('a * 'a -> 'a) -> 'a list -> 'a |
79 val foldr1: ('a * 'a -> 'a) -> 'a list -> 'a |
79 val foldl_map: ('a * 'b -> 'a * 'c) -> 'a * 'b list -> 'a * 'c list |
80 val foldl_map: ('a * 'b -> 'a * 'c) -> 'a * 'b list -> 'a * 'c list |
80 val flat: 'a list list -> 'a list |
81 val flat: 'a list list -> 'a list |
81 val unflat: 'a list list -> 'b list -> 'b list list |
82 val unflat: 'a list list -> 'b list -> 'b list list |
82 val burrow: ('a list -> 'b list) -> 'a list list -> 'b list list |
83 val burrow: ('a list -> 'b list) -> 'a list list -> 'b list list |
398 fun foldr f (l, e) = |
399 fun foldr f (l, e) = |
399 let fun itr [] = e |
400 let fun itr [] = e |
400 | itr (a::l) = f(a, itr l) |
401 | itr (a::l) = f(a, itr l) |
401 in itr l end; |
402 in itr l end; |
402 |
403 |
|
404 (* (op @) [x1, ..., xn] ===> ((x1 @ x2) @ x3) ... @ xn |
|
405 for operators that associate to the left (TAIL RECURSIVE)*) |
|
406 fun foldl1 f [] = raise Empty |
|
407 | foldl1 f (x :: xs) = foldl f (x, xs); |
|
408 |
403 (* (op @) [x1, ..., xn] ===> x1 @ (x2 ... @ (x[n-1] @ xn)) |
409 (* (op @) [x1, ..., xn] ===> x1 @ (x2 ... @ (x[n-1] @ xn)) |
404 for n > 0, operators that associate to the right (not tail recursive)*) |
410 for n > 0, operators that associate to the right (not tail recursive)*) |
405 fun foldr1 f [] = raise Empty |
411 fun foldr1 f [] = raise Empty |
406 | foldr1 f l = |
412 | foldr1 f l = |
407 let fun itr [x] = x |
413 let fun itr [x] = x |