src/Pure/library.ML
changeset 13794 332eb2e69a65
parent 13629 a46362d2b19b
child 14106 bbf708a7e27f
equal deleted inserted replaced
13793:c02c81fd11b8 13794:332eb2e69a65
    79   val hd: 'a list -> 'a
    79   val hd: 'a list -> 'a
    80   val tl: 'a list -> 'a list
    80   val tl: 'a list -> 'a list
    81   val cons: 'a -> 'a list -> 'a list
    81   val cons: 'a -> 'a list -> 'a list
    82   val single: 'a -> 'a list
    82   val single: 'a -> 'a list
    83   val append: 'a list -> 'a list -> 'a list
    83   val append: 'a list -> 'a list -> 'a list
       
    84   val rev_append: 'a list -> 'a list -> 'a list
    84   val apply: ('a -> 'a) list -> 'a -> 'a
    85   val apply: ('a -> 'a) list -> 'a -> 'a
    85   val foldl: ('a * 'b -> 'a) -> 'a * 'b list -> 'a
    86   val foldl: ('a * 'b -> 'a) -> 'a * 'b list -> 'a
    86   val foldr: ('a * 'b -> 'b) -> 'a list * 'b -> 'b
    87   val foldr: ('a * 'b -> 'b) -> 'a list * 'b -> 'b
    87   val foldr1: ('a * 'a -> 'a) -> 'a list -> 'a
    88   val foldr1: ('a * 'a -> 'a) -> 'a list -> 'a
    88   val foldl_map: ('a * 'b -> 'a * 'c) -> 'a * 'b list -> 'a * 'c list
    89   val foldl_map: ('a * 'b -> 'a * 'c) -> 'a * 'b list -> 'a * 'c list
   451 fun cons x xs = x :: xs;
   452 fun cons x xs = x :: xs;
   452 fun single x = [x];
   453 fun single x = [x];
   453 
   454 
   454 fun append xs ys = xs @ ys;
   455 fun append xs ys = xs @ ys;
   455 
   456 
       
   457 (* tail recursive version *)
       
   458 fun rev_append [] ys = ys
       
   459   | rev_append (x :: xs) ys = rev_append xs (x :: ys);
       
   460 
   456 fun apply [] x = x
   461 fun apply [] x = x
   457   | apply (f :: fs) x = apply fs (f x);
   462   | apply (f :: fs) x = apply fs (f x);
   458 
   463 
   459 
   464 
   460 (* fold *)
   465 (* fold *)