aboutsummaryrefslogtreecommitdiff
path: root/src/scTypes.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/scTypes.ml')
-rw-r--r--src/scTypes.ml37
1 files changed, 9 insertions, 28 deletions
diff --git a/src/scTypes.ml b/src/scTypes.ml
index e85b2f1..f0a42d4 100644
--- a/src/scTypes.ml
+++ b/src/scTypes.ml
@@ -105,15 +105,6 @@ module Refs = struct
| Cell of Cell.t (** A cell *)
| Range of Cell.t * Cell.t (** An area of cells *)
- let shift (vector_x, vector_y) ref =
- let _shift ((x, y), (fixed_x, fixed_y)) =
- let x' = if fixed_x then x else x + vector_x
- and y' = if fixed_y then y else y + vector_y in
- (x', y'), (fixed_x, fixed_y)
- in match ref with
- | Cell x -> Cell (_shift x)
- | Range (fst, snd) -> Range (_shift fst, _shift snd)
-
let cell c = Cell c
let range c1 c2 = Range (c1, c2)
@@ -152,44 +143,34 @@ module Expr = struct
let callN ident params = CallN(ident, params)
let expression e = Expression e
- let rec shift_exp vector = function
- | Value v -> Value v
- | Call0 ident -> Call0 ident
- | Call1 (ident, p1) -> Call1 (ident, shift_exp vector p1)
- | Call2 (ident, p1, p2) -> Call2 (ident, shift_exp vector p1, shift_exp vector p2)
- | Call3 (ident, p1, p2, p3) -> Call3 (ident, shift_exp vector p1, shift_exp vector p2, shift_exp vector p3)
- | CallN (ident, params) -> CallN (ident, List.map (shift_exp vector) params)
- | Ref r -> Ref (Refs.shift vector r)
- | Expression expr -> Expression (shift_exp vector expr)
-
module Eval(E:Sym_expr.SYM_EXPR) = struct
module T = Type.Eval(E.T)
module R = Refs.Eval(E.R)
- let eval e t = begin
+ let eval e = begin
let rec _eval v k = begin match v with
- | Ref r -> k @@ E.ref (R.eval_ref r) t
- | Value v -> k @@ E.value (T.eval_type v) t
- | Call0 ident -> k @@ E.call0 ident t
+ | Ref r -> k @@ E.ref (R.eval_ref r)
+ | Value v -> k @@ E.value (T.eval_type v)
+ | Call0 ident -> k @@ E.call0 ident
| Call1 (ident, p1) ->
_eval p1 (fun v1 ->
- k @@ E.call1 ident v1 t)
+ k @@ E.call1 ident v1)
| Call2 (ident, p1, p2) ->
_eval p1 (fun v1 ->
_eval p2 (fun v2 ->
- k @@ E.call2 ident v1 v2 t))
+ k @@ E.call2 ident v1 v2))
| Call3 (ident, p1, p2, p3) ->
(_eval[@tailcall]) p1 (fun v1 ->
(_eval[@tailcall]) p2 (fun v2 ->
(_eval[@tailcall]) p3 (fun v3 ->
- k @@ E.call3 ident v1 v2 v3 t)))
+ k @@ E.call3 ident v1 v2 v3)))
| CallN (ident, exprs) ->
let mapped = List.map (fun x -> _eval x (fun x -> x)) exprs in
- k @@ E.callN ident mapped t
+ k @@ E.callN ident mapped
| Expression e ->
- (_eval[@tailcall]) e (fun v1 -> k @@ E.expression v1 t)
+ (_eval[@tailcall]) e (fun v1 -> k @@ E.expression v1)
end in
E.observe (_eval e (fun x -> x))