Quantcast
Channel: ReScript Forum - Latest posts
Viewing all articles
Browse latest Browse all 2592

Proposing new syntax for zero-cost unwrapping options/results

$
0
0

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,
        ))
      }),
  )

Viewing all articles
Browse latest Browse all 2592

Trending Articles