diff --git a/demo/Makefile b/demo/Makefile deleted file mode 100644 index ce024523c334494d3da466967e7be141201eda6c..0000000000000000000000000000000000000000 --- a/demo/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -MAIN := Test -BUILD := ../_build/default/demo - -.PHONY: all -all: - dune build $(MAIN).exe - -.PHONY: test -test: all - $(BUILD)/$(MAIN).exe - -.PHONY: clean -clean: - rm -f *~ - dune clean diff --git a/demo/Test.ml b/demo/Test.ml deleted file mode 100644 index 2166d32d63643e4fc56016c412f3c44eb05ea61b..0000000000000000000000000000000000000000 --- a/demo/Test.ml +++ /dev/null @@ -1,96 +0,0 @@ -open Printf -open Fix.Memoize.Int -open Feat.Enum - -(* -------------------------------------------------------------------------- *) - -(* A type of binary trees. *) - -type tree = - | Leaf - | Node of int * tree * tree - -let node (x, (t1, t2)) = - Node (x, t1, t2) - -(* -------------------------------------------------------------------------- *) - -(* Enumerating binary trees. *) - -let tree : tree enum = - fix (fun tree -> - just Leaf ++ pay (map node (just 0 ** tree ** tree)) - ) - -(* Enumerating weight-balanced binary trees. *) - -let wb_tree : tree enum = - fix (fun tree -> - just Leaf ++ pay (map node (just 0 ** (tree *-* tree))) - ) - -(* Enumerating lists of weight-balanced binary trees. *) - -let list_wb_tree : tree list enum = - list wb_tree - -(* Enumerating binary trees with two elements in [0; 1]. *) - -let elem : int enum = - enum (Feat.IFSeq.up 0 2) - -let etree : tree enum = - fix (fun tree -> - just Leaf ++ pay (map node (elem ** tree ** tree)) - ) - -(* -------------------------------------------------------------------------- *) - -(* Testing a sequence. *) - -open Feat.IFSeq - -let rec subrange i j s accu = - if i < j then - let accu = get s i :: accu in - subrange (Z.succ i) j s accu - else - List.rev accu - -let subrange i j s = - subrange i j s [] - -let range s = - subrange Z.zero (length s) s - -let test name s = - printf "Testing %s...\n%!" name; - (* Test [length]. *) - printf " Length: %s\n%!" (Z.to_string (length s)); - (* By calling [range s], test [get] at every index within range. *) - assert (Z.equal (length s) (Z.of_int (List.length (range s)))); - printf " Every random access succeeds.\n"; - (* Test [foreach]. We check that it produces the same elements as [get], - in the same order, and that it produces neither too few nor too many - elements. *) - let i = ref Z.zero in - foreach s (fun x1 -> - assert (Z.lt !i (length s)); - let x2 = get s !i in - assert (x1 = x2); (* element equality *) - i := Z.succ !i - ); - assert (Z.equal !i (length s)); - printf " Iteration via foreach is consistent with random access.\n" - -(* -------------------------------------------------------------------------- *) - -(* Main. *) - -let () = - for s = 0 to 8 do - test (sprintf "trees of size %d" s) (tree s); - test (sprintf "balanced trees of size %d" s) (wb_tree s); - test (sprintf "lists of balanced trees of size %d" s) (list_wb_tree s); - test (sprintf "trees of size %d with elements in [0; 1]" s) (etree s); - done diff --git a/demo/dune b/demo/dune deleted file mode 100644 index 386130f3335f44de14a5ed5c1a94191d03b42754..0000000000000000000000000000000000000000 --- a/demo/dune +++ /dev/null @@ -1,5 +0,0 @@ -(test - (name Test) - (libraries unix fix zarith feat) - (flags :standard "-w" "A-44") -)