Improve ReasonLIGO pretty printer output.
This commit is contained in:
parent
63086db0f1
commit
cb39217c8c
@ -48,6 +48,7 @@ and pp_let_binding let_ (binding : let_binding) =
|
||||
in
|
||||
let rhs = pp_expr let_rhs in
|
||||
match let_rhs with
|
||||
| EFun _
|
||||
| ESeq _
|
||||
| ERecord _ -> lhs ^^ rhs
|
||||
| _ -> prefix 2 0 lhs rhs
|
||||
@ -130,7 +131,7 @@ and pp_field_pattern {value; _} =
|
||||
|
||||
and pp_ptyped {value; _} =
|
||||
let {pattern; type_expr; _} = value in
|
||||
group (pp_pattern pattern ^^ string ":" ^/^ pp_type_expr type_expr)
|
||||
group (pp_pattern pattern ^^ string ": " ^^ pp_type_expr type_expr)
|
||||
|
||||
and pp_type_decl decl =
|
||||
let {name; type_expr; _} = decl.value in
|
||||
@ -374,7 +375,7 @@ and pp_fun {value; _} =
|
||||
match lhs_type with
|
||||
None -> empty
|
||||
| Some (_,e) ->
|
||||
group (break 0 ^^ string ":" ^^ nest 2 (break 1 ^^ pp_type_expr e))
|
||||
group (break 0 ^^ string ": " ^^ nest 2 (pp_type_expr e))
|
||||
in
|
||||
match body with
|
||||
| ESeq _ -> string "(" ^^ binders ^^ string ")" ^^ annot ^^ string " => " ^^ pp_expr body
|
||||
|
@ -1,5 +1,4 @@
|
||||
let main =
|
||||
(p: key_hash): address => {
|
||||
let main = (p: key_hash): address => {
|
||||
let c: contract(unit) = Tezos.implicit_account(p);
|
||||
Tezos.address(c)
|
||||
};
|
||||
|
@ -1,5 +1,4 @@
|
||||
let check_ =
|
||||
(p: unit): int =>
|
||||
let check_ = (p: unit): int =>
|
||||
if(Tezos.amount == 100000000mutez) {
|
||||
42
|
||||
} else {
|
||||
|
@ -1,3 +1,2 @@
|
||||
let main =
|
||||
(parameter: int, storage: address) =>
|
||||
let main = (parameter: int, storage: address) =>
|
||||
([] : list(operation), "KT1badaddr" : address);
|
||||
|
@ -1,7 +1,6 @@
|
||||
type storage = tez;
|
||||
|
||||
let main2 =
|
||||
(p: unit, s: storage) =>
|
||||
let main2 = (p: unit, s: storage) =>
|
||||
([] : list(operation), Tezos.balance);
|
||||
|
||||
let main = (x: (unit, storage)) => main2(x[0], x[1]);
|
||||
|
@ -1,17 +1,14 @@
|
||||
let id_string =
|
||||
(p: string): option(string) => {
|
||||
let id_string = (p: string): option(string) => {
|
||||
let packed: bytes = Bytes.pack(p);
|
||||
((Bytes.unpack(packed)) : option(string))
|
||||
};
|
||||
|
||||
let id_int =
|
||||
(p: int): option(int) => {
|
||||
let id_int = (p: int): option(int) => {
|
||||
let packed: bytes = Bytes.pack(p);
|
||||
((Bytes.unpack(packed)) : option(int))
|
||||
};
|
||||
|
||||
let id_address =
|
||||
(p: address): option(address) => {
|
||||
let id_address = (p: address): option(address) => {
|
||||
let packed: bytes = Bytes.pack(p);
|
||||
((Bytes.unpack(packed)) : option(address))
|
||||
};
|
||||
|
@ -1,5 +1,4 @@
|
||||
let check_signature =
|
||||
(param: (key, signature, bytes)): bool => {
|
||||
let check_signature = (param: (key, signature, bytes)): bool => {
|
||||
let (pk, signed, msg) = param;
|
||||
Crypto.check(pk, signed, msg)
|
||||
};
|
||||
|
@ -1,5 +1,4 @@
|
||||
let test =
|
||||
(k: int): int => {
|
||||
let test = (k: int): int => {
|
||||
let j: int = k + 5;
|
||||
let close: (int => int) = (i: int) => i + j;
|
||||
let j: int = 20;
|
||||
|
@ -1,5 +1,4 @@
|
||||
let main =
|
||||
(i: int) => {
|
||||
let main = (i: int) => {
|
||||
let result = 0;
|
||||
if(i == 2) {
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
let main =
|
||||
(i: int) =>
|
||||
let main = (i: int) =>
|
||||
if(i == 2) {
|
||||
42
|
||||
} else {
|
||||
|
@ -1,5 +1,5 @@
|
||||
type storage = int;
|
||||
|
||||
let main =
|
||||
((p, s): (int, storage)): (list(operation), storage) =>
|
||||
let main = ((p, s): (int, storage))
|
||||
: (list(operation), storage) =>
|
||||
([] : list(operation), p + s);
|
||||
|
@ -1,7 +1,6 @@
|
||||
type foo = Bar(int) | Baz;
|
||||
|
||||
let main =
|
||||
(f: foo): int =>
|
||||
let main = (f: foo): int =>
|
||||
switch(f) {
|
||||
| Bar(i) => i
|
||||
| Baz => (-1)
|
||||
|
@ -1,5 +1,4 @@
|
||||
let main =
|
||||
((a, b): (bool, bool)) =>
|
||||
let main = ((a, b): (bool, bool)) =>
|
||||
if(a == b) {
|
||||
999
|
||||
} else {
|
||||
|
@ -1,7 +1,6 @@
|
||||
type storage = unit;
|
||||
|
||||
let main =
|
||||
(p: unit, storage) =>
|
||||
let main = (p: unit, storage) =>
|
||||
if(true) {
|
||||
failwith("This contract always fails")
|
||||
};
|
||||
|
@ -1,27 +1,22 @@
|
||||
let foobar =
|
||||
(i: int): int => {
|
||||
let foobar = (i: int): int => {
|
||||
let foo: int => int = (i: int) => i;
|
||||
let bar: ((int => int) => int) =
|
||||
(f: (int => int)) => f(i);
|
||||
let bar: ((int => int) => int) = (f: (int => int)) => f(i);
|
||||
bar(foo)
|
||||
};
|
||||
|
||||
let higher2 =
|
||||
(i: int, f: (int => int)): int => {
|
||||
let higher2 = (i: int, f: (int => int)): int => {
|
||||
let ii: int = f(i);
|
||||
ii
|
||||
};
|
||||
|
||||
let foobar2 =
|
||||
(i: int): int => {
|
||||
let foobar2 = (i: int): int => {
|
||||
let foo2: int => int = (i: int) => i;
|
||||
higher2(i, foo2)
|
||||
};
|
||||
|
||||
let a: int = 0;
|
||||
|
||||
let foobar3 =
|
||||
(i: int): int => {
|
||||
let foobar3 = (i: int): int => {
|
||||
let foo2: int => int = (i: int) => a + i;
|
||||
higher2(i, foo2)
|
||||
};
|
||||
@ -32,14 +27,13 @@ let g = (i: int): int => f(i);
|
||||
|
||||
let foobar4 = (i: int): int => g(g(i));
|
||||
|
||||
let higher3 =
|
||||
(i: int, f: (int => int), g: (int => int)): int => {
|
||||
let higher3 = (i: int, f: (int => int), g: (int => int))
|
||||
: int => {
|
||||
let ii: int = f(g(i));
|
||||
ii
|
||||
};
|
||||
|
||||
let foobar5 =
|
||||
(i: int): int => {
|
||||
let foobar5 = (i: int): int => {
|
||||
let a: int = 0;
|
||||
let foo: int => int = (i: int) => a + i;
|
||||
let goo: int => int = (i: int) => foo(i);
|
||||
|
@ -1,3 +1,2 @@
|
||||
let main =
|
||||
(kh: key_hash): contract(unit) =>
|
||||
let main = (kh: key_hash): contract(unit) =>
|
||||
Tezos.implicit_account(kh);
|
||||
|
@ -1,5 +1,5 @@
|
||||
let check_hash_key =
|
||||
(kh1_k2: (key_hash, key)): (bool, key_hash) => {
|
||||
let check_hash_key = (kh1_k2: (key_hash, key))
|
||||
: (bool, key_hash) => {
|
||||
let (kh1, k2) = kh1_k2;
|
||||
let kh2: key_hash = Crypto.hash_key(k2);
|
||||
((kh1 == kh2), kh2)
|
||||
|
@ -1,5 +1,4 @@
|
||||
type storage = unit;
|
||||
|
||||
let main =
|
||||
((p, s): (unit, storage)): unit =>
|
||||
let main = ((p, s): (unit, storage)): unit =>
|
||||
(((useless: unit)) => ())(());
|
||||
|
@ -1,5 +1,4 @@
|
||||
type storage = unit;
|
||||
|
||||
let main =
|
||||
((a, s): (unit, storage)): unit =>
|
||||
let main = ((a, s): (unit, storage)): unit =>
|
||||
((f: (unit => unit)) => f(()))((useless: unit) => unit);
|
||||
|
@ -1,7 +1,6 @@
|
||||
type storage = (int, int);
|
||||
|
||||
let main =
|
||||
(n: (int, storage)): (list(operation), storage) => {
|
||||
let main = (n: (int, storage)): (list(operation), storage) => {
|
||||
let x: (int, int) = {
|
||||
let x: int = 7;
|
||||
(x + n[0], n[1][0] + n[1][1])
|
||||
@ -15,8 +14,7 @@ let f1 = (a: string) => true;
|
||||
|
||||
let f2 = (a: string) => true;
|
||||
|
||||
let letin_nesting =
|
||||
(_: unit) => {
|
||||
let letin_nesting = (_: unit) => {
|
||||
let s = "test";
|
||||
let p0 = f0(s);
|
||||
assert(p0);
|
||||
@ -27,8 +25,7 @@ let letin_nesting =
|
||||
s
|
||||
};
|
||||
|
||||
let letin_nesting2 =
|
||||
(x: int) => {
|
||||
let letin_nesting2 = (x: int) => {
|
||||
let y = 2;
|
||||
let z = 3;
|
||||
x + y + z
|
||||
|
@ -10,8 +10,7 @@ let y: list(int) = [3, 4, 5];
|
||||
|
||||
let z: list(int) = [2, ...y];
|
||||
|
||||
let main =
|
||||
((action, s): (parameter, storage)): return => {
|
||||
let main = ((action, s): (parameter, storage)): return => {
|
||||
let storage =
|
||||
switch(action) {
|
||||
| [] => s
|
||||
@ -22,18 +21,15 @@ let main =
|
||||
|
||||
let size_ = (s: list(int)): nat => List.length(s);
|
||||
|
||||
let fold_op =
|
||||
(s: list(int)): int => {
|
||||
let fold_op = (s: list(int)): int => {
|
||||
let aggregate = (t: (int, int)) => t[0] + t[1];
|
||||
List.fold(aggregate, s, 10)
|
||||
};
|
||||
|
||||
let map_op =
|
||||
(s: list(int)): list(int) =>
|
||||
let map_op = (s: list(int)): list(int) =>
|
||||
List.map((cur: int) => cur + 1, s);
|
||||
|
||||
let iter_op =
|
||||
(s: list(int)): unit => {
|
||||
let iter_op = (s: list(int)): unit => {
|
||||
let do_nothing = (useless: int) => unit;
|
||||
List.iter(do_nothing, s)
|
||||
};
|
||||
|
@ -1,5 +1,4 @@
|
||||
let rec aux_simple =
|
||||
(i: int): int =>
|
||||
let rec aux_simple = (i: int): int =>
|
||||
if(i < 100) {
|
||||
aux_simple(i + 1)
|
||||
} else {
|
||||
@ -10,14 +9,12 @@ let counter_simple = (n: int): int => aux_simple(n);
|
||||
|
||||
type sum_aggregator = {counter: int, sum: int };
|
||||
|
||||
let counter =
|
||||
(n: int): int => {
|
||||
let counter = (n: int): int => {
|
||||
let initial: sum_aggregator = {
|
||||
counter: 0,
|
||||
sum: 0
|
||||
};
|
||||
let rec aggregate =
|
||||
(prev: sum_aggregator): int =>
|
||||
let rec aggregate = (prev: sum_aggregator): int =>
|
||||
if(prev.counter <= n) {
|
||||
|
||||
|
||||
@ -31,8 +28,7 @@ let counter =
|
||||
aggregate(initial)
|
||||
};
|
||||
|
||||
let rec aux_nest =
|
||||
(prev: sum_aggregator): sum_aggregator =>
|
||||
let rec aux_nest = (prev: sum_aggregator): sum_aggregator =>
|
||||
if(prev.counter < 100) {
|
||||
|
||||
let sum: int = prev.sum + aux_simple(prev.counter);
|
||||
@ -41,8 +37,7 @@ let rec aux_nest =
|
||||
({counter: prev.counter, sum: prev.sum })
|
||||
};
|
||||
|
||||
let counter_nest =
|
||||
(n: int): int => {
|
||||
let counter_nest = (n: int): int => {
|
||||
let initial: sum_aggregator = {
|
||||
counter: 0,
|
||||
sum: 0
|
||||
|
@ -12,23 +12,20 @@ let map1: foobar =
|
||||
|
||||
let map2: foobar = Map.literal([(23, 0), (42, 0)]);
|
||||
|
||||
let set_ =
|
||||
(n: int, m: foobar): foobar => Map.update(23, Some (n), m);
|
||||
let set_ = (n: int, m: foobar): foobar =>
|
||||
Map.update(23, Some (n), m);
|
||||
|
||||
let add = (n: int, m: foobar): foobar => Map.add(23, n, m);
|
||||
|
||||
let rm = (m: foobar): foobar => Map.remove(42, m);
|
||||
|
||||
let patch_ =
|
||||
(m: foobar): foobar =>
|
||||
let patch_ = (m: foobar): foobar =>
|
||||
Map.literal([(0, 5), (1, 6), (2, 7)]);
|
||||
|
||||
let patch_empty =
|
||||
(m: foobar): foobar =>
|
||||
let patch_empty = (m: foobar): foobar =>
|
||||
Map.literal([(0, 0), (1, 1), (2, 2)]);
|
||||
|
||||
let patch_deep =
|
||||
(m: (foobar, nat)): (foobar, nat) =>
|
||||
let patch_deep = (m: (foobar, nat)): (foobar, nat) =>
|
||||
(Map.literal([(0, 0), (1, 9), (2, 2)]), 10n);
|
||||
|
||||
let size_ = (m: foobar): nat => Map.size(m);
|
||||
@ -39,27 +36,22 @@ let get_ = (m: foobar): option(int) => Map.find_opt(42, m);
|
||||
|
||||
let mem = (km: (int, foobar)): bool => Map.mem(km[0], km[1]);
|
||||
|
||||
let iter_op =
|
||||
(m: foobar): unit => {
|
||||
let iter_op = (m: foobar): unit => {
|
||||
let assert_eq = (i: int, j: int) => assert(i == j);
|
||||
Map.iter(assert_eq, m)
|
||||
};
|
||||
|
||||
let map_op =
|
||||
(m: foobar): foobar => {
|
||||
let map_op = (m: foobar): foobar => {
|
||||
let increment = (z: int, j: int) => j + 1;
|
||||
Map.map(increment, m)
|
||||
};
|
||||
|
||||
let fold_op =
|
||||
(m: foobar): foobar => {
|
||||
let aggregate =
|
||||
(i: int, j: (int, int)) => i + j[0] + j[1];
|
||||
let fold_op = (m: foobar): foobar => {
|
||||
let aggregate = (i: int, j: (int, int)) => i + j[0] + j[1];
|
||||
Map.fold(aggregate, m, 10)
|
||||
};
|
||||
|
||||
let deep_op =
|
||||
(m: foobar): foobar => {
|
||||
let deep_op = (m: foobar): foobar => {
|
||||
let coco = (0, m);
|
||||
let coco = (0, Map.remove(42, coco[1]));
|
||||
let coco = (0, Map.update(32, Some (16), coco[1]));
|
||||
|
@ -4,8 +4,7 @@ type parameter = Add(int) | Sub(int);
|
||||
|
||||
type return = (list(operation), storage);
|
||||
|
||||
let main =
|
||||
((action, store): (parameter, storage)) => {
|
||||
let main = ((action, store): (parameter, storage)) => {
|
||||
let store =
|
||||
store + (switch(action) {
|
||||
| Add(n) => n
|
||||
|
@ -6,8 +6,7 @@ let add = ((a: int), (b: int)) => a + b;
|
||||
|
||||
let sub = ((a: int), (b: int)) => a - b;
|
||||
|
||||
let main =
|
||||
((action, store): (parameter, storage)) => {
|
||||
let main = ((action, store): (parameter, storage)) => {
|
||||
let store =
|
||||
switch(action) {
|
||||
| Increment(n) => add(store, n)
|
||||
|
@ -5,8 +5,7 @@ type storage = michelson_pair
|
||||
|
||||
type return = (list(operation), storage);
|
||||
|
||||
let main =
|
||||
((action, store): (unit, storage)): return => {
|
||||
let main = ((action, store): (unit, storage)): return => {
|
||||
let foo = (3, (1, 2n));
|
||||
(([] : list(operation)), (foo : storage))
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
let abcde_curried =
|
||||
(a: int, b: int, c: int, d: int, e: int): int => c + e + 3;
|
||||
let abcde_curried = (a: int, b: int, c: int, d: int, e: int)
|
||||
: int =>
|
||||
c + e + 3;
|
||||
|
||||
let abcde =
|
||||
(x: (int, int, int, int, int)): int =>
|
||||
let abcde = (x: (int, int, int, int, int)): int =>
|
||||
abcde_curried(x[0], x[1], x[2], x[3], x[4]);
|
||||
|
@ -29,8 +29,8 @@ type return = (list(operation), storage);
|
||||
|
||||
type parameter = CheckMessage(check_message_pt);
|
||||
|
||||
let check_message =
|
||||
((param, s): (check_message_pt, storage)): return => {
|
||||
let check_message = ((param, s): (check_message_pt, storage))
|
||||
: return => {
|
||||
let message: message = param.message;
|
||||
let s =
|
||||
if(param.counter != s.counter) {
|
||||
@ -38,15 +38,11 @@ let check_message =
|
||||
} else {
|
||||
|
||||
let packed_payload: bytes =
|
||||
|
||||
Bytes.pack((message, param.counter, s.id, chain_id));
|
||||
let valid: nat = 0n;
|
||||
let keys: authorized_keys = s.auth;
|
||||
let aux =
|
||||
((vk, pkh_sig):
|
||||
((nat, authorized_keys), (key_hash, signature)))
|
||||
:
|
||||
(nat, authorized_keys) => {
|
||||
let aux = ((vk, pkh_sig): ((nat, authorized_keys),
|
||||
(key_hash, signature))): (nat, authorized_keys) => {
|
||||
let (valid, keys) = vk;
|
||||
switch(keys) {
|
||||
| [] => vk
|
||||
@ -55,9 +51,7 @@ let check_message =
|
||||
|
||||
let valid =
|
||||
if(
|
||||
Crypto.check(key,
|
||||
pkh_sig[1],
|
||||
packed_payload)) {
|
||||
Crypto.check(key, pkh_sig[1], packed_payload)) {
|
||||
valid + 1n
|
||||
} else {
|
||||
(failwith("Invalid signature") : nat)
|
||||
@ -72,8 +66,7 @@ let check_message =
|
||||
List.fold(aux, param.signatures, (valid, keys));
|
||||
if(valid < s.threshold) {
|
||||
|
||||
(
|
||||
failwith("Not enough signatures passed the check")
|
||||
(failwith("Not enough signatures passed the check")
|
||||
: storage)
|
||||
} else {
|
||||
{...s, counter: s.counter + 1n}
|
||||
@ -82,8 +75,7 @@ let check_message =
|
||||
(message(unit), s)
|
||||
};
|
||||
|
||||
let main =
|
||||
((action, store): (parameter, storage)): return =>
|
||||
let main = ((action, store): (parameter, storage)): return =>
|
||||
switch(action) {
|
||||
| CheckMessage(p) => check_message((p, store))
|
||||
};
|
||||
|
@ -1,7 +1,6 @@
|
||||
type f = int;
|
||||
|
||||
let a =
|
||||
(b: f) => {
|
||||
let a = (b: f) => {
|
||||
if(b == 2) {
|
||||
3
|
||||
} else {
|
||||
@ -9,7 +8,6 @@ let a =
|
||||
}
|
||||
};
|
||||
|
||||
let c =
|
||||
(c: f) => {
|
||||
let c = (c: f) => {
|
||||
3
|
||||
};
|
||||
|
@ -4,15 +4,13 @@ type parameter =
|
||||
Donate(unit)
|
||||
| Distribute((unit => list(operation)));
|
||||
|
||||
let donate =
|
||||
((p, s): (unit, storage)): (list(operation), storage) => {
|
||||
let donate = ((p, s): (unit, storage))
|
||||
: (list(operation), storage) => {
|
||||
(([] : list(operation)), s)
|
||||
};
|
||||
|
||||
let distribute =
|
||||
((p, s): ((unit => list(operation)), storage))
|
||||
:
|
||||
(list(operation), storage) => {
|
||||
let distribute = ((p, s): ((unit => list(operation)),
|
||||
storage)): (list(operation), storage) => {
|
||||
if(Tezos.sender == s) {
|
||||
(p(()), s)
|
||||
} else {
|
||||
@ -23,8 +21,8 @@ let distribute =
|
||||
}
|
||||
};
|
||||
|
||||
let main =
|
||||
((p, s): (parameter, storage)): (list(operation), storage) => {
|
||||
let main = ((p, s): (parameter, storage))
|
||||
: (list(operation), storage) => {
|
||||
switch(p) {
|
||||
| Donate => donate(((), s))
|
||||
| Distribute msg => distribute((msg, s))
|
||||
|
@ -24,5 +24,6 @@ let br: big_record = {a: 23, b: 23, c: 23, d: 23, e: 23 };
|
||||
|
||||
type double_record = {inner: abc };
|
||||
|
||||
let modify_inner =
|
||||
(r: double_record): double_record => {...r, inner.b: 2048};
|
||||
let modify_inner = (r: double_record): double_record =>
|
||||
{...r,
|
||||
inner.b: 2048};
|
||||
|
@ -1,13 +1,11 @@
|
||||
let rec sum =
|
||||
((n, acc): (int, int)): int =>
|
||||
let rec sum = ((n, acc): (int, int)): int =>
|
||||
if(n < 1) {
|
||||
acc
|
||||
} else {
|
||||
sum((n - 1, acc + n))
|
||||
};
|
||||
|
||||
let rec fibo =
|
||||
((n, n_1, n_0): (int, int, int)): int =>
|
||||
let rec fibo = ((n, n_1, n_0): (int, int, int)): int =>
|
||||
if(n < 2) {
|
||||
n_1
|
||||
} else {
|
||||
|
@ -1,15 +1,13 @@
|
||||
let literal_op =
|
||||
(p: unit): set(string) =>
|
||||
let literal_op = (p: unit): set(string) =>
|
||||
Set.literal(["foo", "bar", "foobar"]);
|
||||
|
||||
let add_op =
|
||||
(s: set(string)): set(string) => Set.add("foobar", s);
|
||||
let add_op = (s: set(string)): set(string) =>
|
||||
Set.add("foobar", s);
|
||||
|
||||
let remove_op =
|
||||
(s: set(string)): set(string) => Set.remove("foobar", s);
|
||||
let remove_op = (s: set(string)): set(string) =>
|
||||
Set.remove("foobar", s);
|
||||
|
||||
let remove_deep =
|
||||
(s: (set(string), nat)): set(string) =>
|
||||
let remove_deep = (s: (set(string), nat)): set(string) =>
|
||||
Set.remove("foobar", s[0]);
|
||||
|
||||
let mem_op = (s: set(string)): bool => Set.mem("foobar", s);
|
||||
|
@ -1,5 +1,4 @@
|
||||
let main =
|
||||
(p: key_hash): list(operation) => {
|
||||
let main = (p: key_hash): list(operation) => {
|
||||
let unused: operation = (Tezos.set_delegate(Some (p)));
|
||||
([] : list(operation))
|
||||
};
|
||||
|
@ -4,8 +4,7 @@ type storage = int;
|
||||
|
||||
type return = (list(operation), storage);
|
||||
|
||||
let main =
|
||||
((action, store): (parameter, storage)): return => {
|
||||
let main = ((action, store): (parameter, storage)): return => {
|
||||
let store =
|
||||
switch(action) {
|
||||
| Increment(n) => store + n
|
||||
|
@ -1,4 +1,4 @@
|
||||
let sum = ((result, i): (int, int)): int => result - i;
|
||||
|
||||
let parentheses =
|
||||
(((((result, i)))): (((int, int)))): int => result - i;
|
||||
let parentheses = (((((result, i)))): (((int, int)))): int =>
|
||||
result - i;
|
||||
|
@ -1,19 +1,17 @@
|
||||
type fun_type = (int, int) => int;
|
||||
|
||||
let arguments =
|
||||
(b: int, c: int) => {
|
||||
let arguments = (b: int, c: int) => {
|
||||
b + c
|
||||
};
|
||||
|
||||
let arguments_type_def = (b: fun_type) => b(5, 3);
|
||||
|
||||
let arguments_test =
|
||||
(_: int) => arguments_type_def(arguments);
|
||||
let arguments_test = (_: int) =>
|
||||
arguments_type_def(arguments);
|
||||
|
||||
type tuple_type = ((int, int)) => int;
|
||||
|
||||
let tuple =
|
||||
((a, b): (int, int)) => {
|
||||
let tuple = ((a, b): (int, int)) => {
|
||||
a + b
|
||||
};
|
||||
|
||||
@ -21,24 +19,22 @@ let tuple_type_def = (b: tuple_type) => b((5, 3));
|
||||
|
||||
let tuple_test = (_: int) => tuple_type_def(tuple);
|
||||
|
||||
let arguments_inline =
|
||||
(b: int, c: int) => {
|
||||
let arguments_inline = (b: int, c: int) => {
|
||||
b + c
|
||||
};
|
||||
|
||||
let arguments_type_def_inline =
|
||||
(b: (int, int) => int) => b(5, 3);
|
||||
let arguments_type_def_inline = (b: (int, int) => int) =>
|
||||
b(5, 3);
|
||||
|
||||
let arguments_test_inline =
|
||||
(_: int) => arguments_type_def_inline(arguments_inline);
|
||||
let arguments_test_inline = (_: int) =>
|
||||
arguments_type_def_inline(arguments_inline);
|
||||
|
||||
let tuple_inline =
|
||||
((a, b): (int, int)) => {
|
||||
let tuple_inline = ((a, b): (int, int)) => {
|
||||
a + b
|
||||
};
|
||||
|
||||
let tuple_type_def_inline =
|
||||
(b: ((int, int)) => int) => b((5, 3));
|
||||
let tuple_type_def_inline = (b: ((int, int)) => int) =>
|
||||
b((5, 3));
|
||||
|
||||
let tuple_test_inline =
|
||||
(_: int) => tuple_type_def_inline(tuple_inline);
|
||||
let tuple_test_inline = (_: int) =>
|
||||
tuple_type_def_inline(tuple_inline);
|
||||
|
@ -2,7 +2,6 @@ type storage = (int, string, nat, bool);
|
||||
|
||||
type parameter = int;
|
||||
|
||||
let main =
|
||||
((p, storage): (parameter, storage)) => {
|
||||
let main = ((p, storage): (parameter, storage)) => {
|
||||
([] : list(operation), (2, "2", 2n, false))
|
||||
};
|
||||
|
@ -6,8 +6,7 @@ let add = ((a, b): (int, int)): int => a + b;
|
||||
|
||||
let sub = ((a, b): (int, int)): int => a - b;
|
||||
|
||||
let main =
|
||||
((p, storage): (parameter, storage)) => {
|
||||
let main = ((p, storage): (parameter, storage)) => {
|
||||
let storage =
|
||||
switch(p) {
|
||||
| Increment(n) => add((storage, n))
|
||||
|
Loading…
Reference in New Issue
Block a user