[Pkg-ocaml-maint-commits] [ocaml-visitors] 01/01: start on test case
Ralf Treinen
treinen at moszumanska.debian.org
Wed May 24 14:44:45 UTC 2017
This is an automated email from the git hooks/post-receive script.
treinen pushed a commit to branch master
in repository ocaml-visitors.
commit b1050ddf45a2b3705f63cbd674d27770faa2f9b1
Author: Ralf Treinen <treinen at irif.fr>
Date: Wed May 24 16:44:38 2017 +0200
start on test case
---
debian/tests/Makefile | 5 +++++
debian/tests/expr.ml | 25 +++++++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/debian/tests/Makefile b/debian/tests/Makefile
new file mode 100644
index 0000000..04e821b
--- /dev/null
+++ b/debian/tests/Makefile
@@ -0,0 +1,5 @@
+expr.native expr.byte: expr.ml
+ ocamlbuild -use-ocamlfind -pkgs 'visitors.ppx,visitors.runtime' $@
+
+clean:
+ -ocamlbuild -clean
diff --git a/debian/tests/expr.ml b/debian/tests/expr.ml
new file mode 100644
index 0000000..b0c6117
--- /dev/null
+++ b/debian/tests/expr.ml
@@ -0,0 +1,25 @@
+type expr =
+ | EConst of int
+ | EAdd of expr * expr
+ [@@deriving visitors { variety = "iter" }]
+
+let weight (e : expr) : int =
+ (* return the weight of an expr, where constants have weight 2, and *)
+ (* additions have weight 5. *)
+ let v = object
+ val mutable weight = 0
+ method weight = weight
+ inherit [_] iter as super
+ method! visit_EAdd env e0 e1 =
+ weight <- weight + 5;
+ super#visit_EAdd env e0 e1
+ method! visit_EConst env i =
+ weight <- weight + i;
+ super#visit_EConst env i
+ end in
+ v#visit_expr () e;
+ v#weight
+;;
+
+let c = EConst 2 in
+let e = EAdd(c,EAdd(c,c)) in print_int (weight e);;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/ocaml-visitors.git
More information about the Pkg-ocaml-maint-commits
mailing list