forked from reasonml/reason
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinput.re
98 lines (62 loc) · 2.01 KB
/
input.re
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/* Copyright (c) 2015-present, Facebook, Inc. All rights reserved. */
let l = [1,2,3] |> List.map (i => i+1, _) |> List.filter (i => i>0, _);
let l = (i => i+1) |> List.map(_, [1,2,3]);
let x = List.length(_);
let nested = x => List.length(_);
let incr = (~v) => v+1;
let l1 = [1,2,3] |> List.map(incr(~v=_)) |> List.length;
let l2 = [1,2,3] |> List.map(incr(~v =_)) |> List.length;
let a1 = [|1, 2, 3|] |> Array.get(_, 1);
let s1 = "roses are red" |> String.get(_, 4);
let optParam = (~v=?, ()) => v == None ? 0 : 1;
let l1 =
[Some(1), None, Some(2)] |> List.map(optParam(~v=?_, ())) |> List.length;
let l2 =
[Some(1), None, Some(2)] |> List.map(optParam(~v =?_, ())) |> List.length;
let argIsUnderscore1 = _ => 34;
let argIsUnderscore2 = (_ => 34);
let argIsUnderscore3 = _ : int => 34;
let argIsUnderscore4 = (_ : int => 34);
let argIsUnderscore5 = (_: int) => 34;
let argIsUnderscore6 = ((_: int) => 34);
type reasonXyz =
| X
| Y(int,int,int)
| Z(int,int)
| Q
| R;
type reasonXyzWithOf =
| X
| Y(int,int,int)
| Z(int,int)
| Q
| R;
let reasonBarAs = fun
| ((Y(_) | Z(_)) as t, _) => {let _ = t; true}
| _ => false;
let reasonDoubleBar = fun
| X | Y(_,_,_) | Z(_,_) | Q => true
| _ => false;
let reasonDoubleBarNested = fun
| X | Y(_,_,_) | (Z(_,_) | Q) => true
| _ => false;
/* Liberal use of the Any pattern being compatible with multiple
arguments */
let reasonDoubleBarAnyPatterns = fun
| X | Y(_) | Z(_) | Q => true
| _ => false;
let reasonDoubleBarNestedAnyPatterns = fun
| X | Y(_) | (Z(_) | Q) => true
| _ => false;
let (\+) = (+);
let a = 2.0 ** 4.0;
let (\===) = (===);
let expectedPrecendence = 1 + 1 \=== 1 + 1 && 1 + 1 \!== 1 + 1;
let expectedPrecendence = 1 \+ 1 \=== 1 \+ 1 && 1 \+ 1 \!== 1 \+ 1;
module X: {let x: (~x: unit=?, unit) => unit;} = {
let x(~x=(),()) = ();
};
let display (~message=("hello": string), ~person: string="Reason", time: float) = 1;
let not = (x, y) => x + y;
let added: int = not(1, 2);
let better = foo => !foo ? 42 : not(41, 2);