一些 CAML 代码

作业

combine

Define the combine function which, when given a pair of lists, returns a list of pairs such that:

combine ([x1;...;xn],[y1;...;yn]) = [(x1,y1);...;(xn,yn)]

let rec combine = function ([],[])->[]
       | (x1::rest1,x2::rest2)->(x1,x2)::combine (rest1,rest2)
       | _->raise (Failure "combine");;

combine ([1;2;3;4],[5;6;7;8]);;

sublists

Define a function which, when given a list, returns the list of all its sublists.

let rec sublists = function []->[[]]
       | l ->
         let rec headlists = function []->[]
                | x::rest -> 
                  [x]::(map (function l -> x::l) (headlists rest)) in
             append (headlists l, sublists (tail l));;

sublists [1;2;3;4];;