Skip to content

Commit 23ca01e

Browse files
committed
refactor(encode): explicitly curry combinators
1 parent 3b45fd7 commit 23ca01e

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/Json_Encode.res

+6-6
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,22 @@ let option = encode => opt =>
3939
| Some(v) => v->encode
4040
}
4141

42-
let withDefault = (default, encode, opt) =>
42+
let withDefault = (default, encode) => opt =>
4343
switch opt {
4444
| None => default
4545
| Some(v) => v->encode
4646
}
4747

4848
let date = date => date->Js.Date.toJSONUnsafe->string
4949

50-
let pair = (encodeA, encodeB, (a, b)) => [a->encodeA, b->encodeB]->jsonArray
51-
let tuple2 = (encodeA, encodeB, (a, b)) => [a->encodeA, b->encodeB]->jsonArray
52-
let tuple3 = (encodeA, encodeB, encodeC, (a, b, c)) =>
50+
let pair = (encodeA, encodeB) => ((a, b)) => [a->encodeA, b->encodeB]->jsonArray
51+
let tuple2 = (encodeA, encodeB) => ((a, b)) => [a->encodeA, b->encodeB]->jsonArray
52+
let tuple3 = (encodeA, encodeB, encodeC) => ((a, b, c)) =>
5353
[a->encodeA, b->encodeB, c->encodeC]->jsonArray
54-
let tuple4 = (encodeA, encodeB, encodeC, encodeD, (a, b, c, d)) =>
54+
let tuple4 = (encodeA, encodeB, encodeC, encodeD) => ((a, b, c, d)) =>
5555
[a->encodeA, b->encodeB, c->encodeC, d->encodeD]->jsonArray
5656

57-
let dict = (encode, dict) => Js.Dict.map((. v) => encode(v), dict)->jsonDict
57+
let dict = encode => dict => Js.Dict.map(v => encode(v), dict)->jsonDict
5858

5959
module Unsafe = {
6060
external object: {..} => Js.Json.t = "%identity"

src/Json_Encode.resi

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ let array: t<'a> => t<array<'a>>
1010
let list: t<'a> => t<list<'a>>
1111
let object: array<(string, Js.Json.t)> => Js.Json.t
1212
let option: t<'a> => t<option<'a>>
13-
let withDefault: (Js.Json.t, t<'a>, option<'a>) => Js.Json.t
13+
let withDefault: (Js.Json.t, t<'a>) => option<'a> => Js.Json.t
1414

1515
let date: Js.Date.t => Js.Json.t
16-
let pair: (t<'a>, t<'b>, ('a, 'b)) => Js.Json.t
17-
let tuple2: (t<'a>, t<'b>, ('a, 'b)) => Js.Json.t
18-
let tuple3: (t<'a>, t<'b>, t<'c>, ('a, 'b, 'c)) => Js.Json.t
19-
let tuple4: (t<'a>, t<'b>, t<'c>, t<'d>, ('a, 'b, 'c, 'd)) => Js.Json.t
20-
let dict: (t<'a>, Js.Dict.t<'a>) => Js.Json.t
16+
let pair: (t<'a>, t<'b>) => (('a, 'b)) => Js.Json.t
17+
let tuple2: (t<'a>, t<'b>) => (('a, 'b)) => Js.Json.t
18+
let tuple3: (t<'a>, t<'b>, t<'c>) => (('a, 'b, 'c)) => Js.Json.t
19+
let tuple4: (t<'a>, t<'b>, t<'c>, t<'d>) => (('a, 'b, 'c, 'd)) => Js.Json.t
20+
let dict: t<'a> => Js.Dict.t<'a> => Js.Json.t
2121

2222
// Short-hands for zero-cost composite primitives
2323
external jsonDict: Js.Dict.t<Js.Json.t> => Js.Json.t = "%identity"

0 commit comments

Comments
 (0)