Here is a great example:
this becomes:
let object25 = (
destruct,
construct,
field1,
field2,
field3,
field4,
field5,
field6,
field7,
field8,
field9,
field10,
field11,
field12,
field13,
field14,
field15,
field16,
field17,
field18,
field19,
field20,
field21,
field22,
field23,
field24,
field25,
) =>
Codec.make(
// encode
value => {
let (
val1,
val2,
val3,
val4,
val5,
val6,
val7,
val8,
val9,
val10,
val11,
val12,
val13,
val14,
val15,
val16,
val17,
val18,
val19,
val20,
val21,
val22,
val23,
val24,
val25,
) = destruct(value)
jsonObject([
Field.encode(field1, val1),
Field.encode(field2, val2),
Field.encode(field3, val3),
Field.encode(field4, val4),
Field.encode(field5, val5),
Field.encode(field6, val6),
Field.encode(field7, val7),
Field.encode(field8, val8),
Field.encode(field9, val9),
Field.encode(field10, val10),
Field.encode(field11, val11),
Field.encode(field12, val12),
Field.encode(field13, val13),
Field.encode(field14, val14),
Field.encode(field15, val15),
Field.encode(field16, val16),
Field.encode(field17, val17),
Field.encode(field18, val18),
Field.encode(field19, val19),
Field.encode(field20, val20),
Field.encode(field21, val21),
Field.encode(field22, val22),
Field.encode(field23, val23),
Field.encode(field24, val24),
Field.encode(field25, val25),
])
},
// decode
json =>
json
->asObject
->Result.flatMap(fieldset => {
let? Ok(val1) = field1->Field.decode(fieldset)
let? Ok(val2) = field1->Field.decode(fieldset)
let? Ok(val3) = field1->Field.decode(fieldset)
let? Ok(val4) = field1->Field.decode(fieldset)
let? Ok(val5) = field1->Field.decode(fieldset)
let? Ok(val6) = field1->Field.decode(fieldset)
let? Ok(val7) = field1->Field.decode(fieldset)
let? Ok(val8) = field1->Field.decode(fieldset)
let? Ok(val9) = field1->Field.decode(fieldset)
let? Ok(val10) = field1->Field.decode(fieldset)
let? Ok(val11) = field1->Field.decode(fieldset)
let? Ok(val12) = field1->Field.decode(fieldset)
let? Ok(val13) = field1->Field.decode(fieldset)
let? Ok(val14) = field1->Field.decode(fieldset)
let? Ok(val15) = field1->Field.decode(fieldset)
let? Ok(val16) = field1->Field.decode(fieldset)
let? Ok(val17) = field1->Field.decode(fieldset)
let? Ok(val18) = field1->Field.decode(fieldset)
let? Ok(val19) = field1->Field.decode(fieldset)
let? Ok(val20) = field1->Field.decode(fieldset)
let? Ok(val21) = field1->Field.decode(fieldset)
let? Ok(val22) = field1->Field.decode(fieldset)
let? Ok(val23) = field1->Field.decode(fieldset)
let? Ok(val24) = field1->Field.decode(fieldset)
let? Ok(val25) = field1->Field.decode(fieldset)
construct((
val1,
val2,
val3,
val4,
val5,
val6,
val7,
val8,
val9,
val10,
val11,
val12,
val13,
val14,
val15,
val16,
val17,
val18,
val19,
val20,
val21,
val22,
val23,
val24,
val25,
))
}),
)