Week 11: exercises from week 10ΒΆ

let rec f xs n q =
        if n = 0 then
                true
        else if n > 0 then
                (match xs with
                | [] -> false
                | y::ys ->
                        (* f ys (n-y) (enq y q) *)
                        let n' = n - y in
                        let xs' = ys in
                        let q' = enq y q in
                        f xs' n' q')
        else (* n < 0 *)
                let a, q' = deq q in
                let n' = n + a in
                let xs' = xs in
                f xs' n' q' ;;



let findseg xs n = f xs n ([], []);;

http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html

http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html