diff options
author | Son Ho | 2022-05-01 15:38:44 +0200 |
---|---|---|
committer | Son Ho | 2022-05-01 15:38:44 +0200 |
commit | 2837ecd9ee1687679bf9afac03fd488b5afef5e3 (patch) | |
tree | 8f721f3ec39a8e536006c502e5bb7dbf32c5e7a6 /src/Pure.ml | |
parent | 5bc3184f7922e5b1c0855ea7c83dd1c3c0985904 (diff) |
Rename "lvalue" to "pattern"
Diffstat (limited to 'src/Pure.ml')
-rw-r--r-- | src/Pure.ml | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/src/Pure.ml b/src/Pure.ml index 243b493e..05f7e199 100644 --- a/src/Pure.ml +++ b/src/Pure.ml @@ -287,28 +287,25 @@ type var_or_dummy = polymorphic = false; }] -(** A left value (which appears on the left of assignments. - - TODO: rename to "pattern" - *) -type lvalue = - | LvConcrete of constant_value - (** [LvConcrete] is necessary because we merge the switches over integer - values and the matches over enumerations *) - | LvVar of var_or_dummy - | LvAdt of adt_lvalue - -and adt_lvalue = { +(** A pattern (which appears on the left of assignments, in matches, etc.). *) +type pattern = + | PatConcrete of constant_value + (** [PatConcrete] is necessary because we merge the switches over integer + values and the matches over enumerations *) + | PatVar of var_or_dummy + | PatAdt of adt_pattern + +and adt_pattern = { variant_id : variant_id option; - field_values : typed_lvalue list; + field_values : typed_pattern list; } -and typed_lvalue = { value : lvalue; ty : ty } +and typed_pattern = { value : pattern; ty : ty } [@@deriving show, visitors { - name = "iter_typed_lvalue"; + name = "iter_typed_pattern"; variety = "iter"; ancestors = [ "iter_var_or_dummy" ]; nude = true (* Don't inherit [VisitorsRuntime.iter] *); @@ -317,7 +314,7 @@ and typed_lvalue = { value : lvalue; ty : ty } }, visitors { - name = "map_typed_lvalue"; + name = "map_typed_pattern"; variety = "map"; ancestors = [ "map_var_or_dummy" ]; nude = true (* Don't inherit [VisitorsRuntime.iter] *); @@ -326,7 +323,7 @@ and typed_lvalue = { value : lvalue; ty : ty } }, visitors { - name = "reduce_typed_lvalue"; + name = "reduce_typed_pattern"; variety = "reduce"; ancestors = [ "reduce_var_or_dummy" ]; nude = true (* Don't inherit [VisitorsRuntime.iter] *); @@ -334,7 +331,7 @@ and typed_lvalue = { value : lvalue; ty : ty } }, visitors { - name = "mapreduce_typed_lvalue"; + name = "mapreduce_typed_pattern"; variety = "mapreduce"; ancestors = [ "mapreduce_var_or_dummy" ]; nude = true (* Don't inherit [VisitorsRuntime.iter] *); @@ -393,7 +390,7 @@ type var_id = VarId.id [@@deriving show] (** Ancestor for [iter_expression] visitor *) class ['self] iter_expression_base = object (_self : 'self) - inherit [_] iter_typed_lvalue + inherit [_] iter_typed_pattern method visit_integer_type : 'env -> integer_type -> unit = fun _ _ -> () @@ -405,7 +402,7 @@ class ['self] iter_expression_base = (** Ancestor for [map_expression] visitor *) class ['self] map_expression_base = object (_self : 'self) - inherit [_] map_typed_lvalue + inherit [_] map_typed_pattern method visit_integer_type : 'env -> integer_type -> integer_type = fun _ x -> x @@ -418,7 +415,7 @@ class ['self] map_expression_base = (** Ancestor for [reduce_expression] visitor *) class virtual ['self] reduce_expression_base = object (self : 'self) - inherit [_] reduce_typed_lvalue + inherit [_] reduce_typed_pattern method visit_integer_type : 'env -> integer_type -> 'a = fun _ _ -> self#zero @@ -431,7 +428,7 @@ class virtual ['self] reduce_expression_base = (** Ancestor for [mapreduce_expression] visitor *) class virtual ['self] mapreduce_expression_base = object (self : 'self) - inherit [_] mapreduce_typed_lvalue + inherit [_] mapreduce_typed_pattern method visit_integer_type : 'env -> integer_type -> integer_type * 'a = fun _ x -> (x, self#zero) @@ -463,9 +460,9 @@ type expression = field accesses with calls to projectors over fields (when there are clashes of field names, some provers like F* get pretty bad...) *) - | Abs of typed_lvalue * texpression (** Lambda abstraction: `fun x -> e` *) + | Abs of typed_pattern * texpression (** Lambda abstraction: `fun x -> e` *) | Qualif of qualif (** A top-level qualifier *) - | Let of bool * typed_lvalue * texpression * texpression + | Let of bool * typed_pattern * texpression * texpression (** Let binding. TODO: the boolean should be replaced by an enum: sometimes we use @@ -509,7 +506,7 @@ type expression = and switch_body = If of texpression * texpression | Match of match_branch list -and match_branch = { pat : typed_lvalue; branch : texpression } +and match_branch = { pat : typed_pattern; branch : texpression } and texpression = { e : expression; ty : ty } @@ -587,8 +584,8 @@ type inst_fun_sig = { inputs : ty list; outputs : ty list } type fun_body = { inputs : var list; - inputs_lvs : typed_lvalue list; - (** The inputs seen as lvalues. Allows to make transformations, for example + inputs_lvs : typed_pattern list; + (** The inputs seen as patterns. Allows to make transformations, for example to replace unused variables by `_` *) body : texpression; } |