sUTL core library, part 4

Named reusable transforms, with full declarations and explicit dependency lists.

sUTL · Guide · Reference · Examples

These are declarations from the core distribution. Compile their named requirements against the complete distribution; an isolated declaration may depend on others. Historical language: "sUTL0" labels are retained as archived input, accepted by the current language. See declarations and libraries.

applynewdiff_core_emlynoregan_com

Requires: applynewdiff, when, removedupstrarr, map_core, longest.

{
  "name": "applynewdiff_core_emlynoregan_com",
  "transform-t": {
    "!": {
      ":": {
        "&": "when",
        "cases": [
          [
            {
              ":": [
                "&=",
                null,
                "^@.diff"
              ]
            },
            {
              ":": "^@.old"
            }
          ],
          [
            {
              ":": [
                "&!=",
                "^@.oldtype",
                "^@.difftype"
              ]
            },
            {
              ":": "^@.diff"
            }
          ],
          [
            {
              ":": [
                "&=",
                "^@.difftype",
                "map"
              ]
            },
            {
              ":": {
                "!": {
                  ":": {
                    "&": "makemap",
                    "value": {
                      "&": "map_core",
                      "list": "^@.keys",
                      "t": {
                        ":": [
                          "^@.item",
                          {
                            "&": "applynewdiff",
                            "old": [
                              "^@",
                              "old",
                              "^@.item"
                            ],
                            "diff": [
                              "^@",
                              "diff",
                              "^@.item"
                            ]
                          }
                        ]
                      }
                    }
                  }
                },
                "keys": {
                  "&": "removedupstrarr",
                  "list": [
                    "&&",
                    {
                      "&": "keys",
                      "map": "^@.old"
                    },
                    {
                      "&": "keys",
                      "map": "^@.diff"
                    }
                  ]
                }
              }
            }
          ],
          [
            {
              ":": [
                "&=",
                "^@.difftype",
                "list"
              ]
            },
            {
              ":": {
                "!": {
                  ":": [
                    "^%",
                    {
                      "&": "reduce",
                      "accum": {
                        "index": 0,
                        "result": []
                      },
                      "list": "^@.longestlist",
                      "t": {
                        ":": {
                          "index": [
                            "&+",
                            "^@.accum.index",
                            1
                          ],
                          "result": [
                            "&&",
                            "^@.accum.result",
                            {
                              "&": "applynewdiff",
                              "old": [
                                "^@",
                                "old",
                                "^@.accum.index"
                              ],
                              "diff": [
                                "^@",
                                "diff",
                                "^@.accum.index"
                              ]
                            }
                          ]
                        }
                      }
                    },
                    "result"
                  ]
                },
                "longestlist": {
                  "&": "longest",
                  "list": [
                    "^@.old",
                    "^@.diff"
                  ]
                }
              }
            }
          ],
          {
            ":": "^@.diff"
          }
        ]
      }
    },
    "oldtype": {
      "&": "type",
      "value": "^@.old"
    },
    "difftype": {
      "&": "type",
      "value": "^@.diff"
    }
  },
  "requires": [
    "applynewdiff",
    "when",
    "removedupstrarr",
    "map_core",
    "longest"
  ]
}

combine_core_emlynoregan_com

{
  "name": "combine_core_emlynoregan_com",
  "transform-t": {
    "&": "reduce",
    "list": "^@.list",
    "accum": null,
    "t": {
      ":": {
        "&": "if",
        "cond": {
          ":": "^@.accum"
        },
        "false": {
          ":": "^@.item"
        },
        "true": {
          ":": {
            "&": "makemap",
            "value": [
              [
                "!!",
                {
                  "&": "makemap",
                  "value": [
                    [
                      ":",
                      "^@.item"
                    ]
                  ]
                }
              ],
              [
                "s",
                "^@.accum"
              ]
            ]
          }
        }
      }
    }
  }
}

declcombine_core_emlynoregan_com

Requires: combine, keys2map.

{
  "name": "declcombine_core_emlynoregan_com",
  "transform-t": {
    "transform-t": {
      "&": "combine",
      "list": "&@.list.*.transform-t"
    },
    "requires": {
      "&": "keys",
      "map": {
        "&": "keys2map",
        "list": {
          "!": {
            "&": "reduce",
            "list": "&@.list.*.requires",
            "accum": {
              ":": [
                "&&"
              ]
            },
            "t": {
              ":": [
                "&&",
                "^@.accum",
                "^@.item"
              ]
            }
          }
        }
      }
    }
  },
  "requires": [
    "combine",
    "keys2map"
  ]
}

max_core_emlynoregan_com

Requires: map_core.

{
  "name": "max_core_emlynoregan_com",
  "transform-t": {
    "&": "reduce",
    "accum": 0,
    "t": {
      ":": {
        "!": {
          ":": {
            "&": "if",
            "cond": {
              ":": [
                "&>=",
                "^@.accum",
                "^@.item"
              ]
            },
            "true": {
              ":": "^@.accum"
            },
            "false": {
              ":": "^@.item"
            }
          }
        }
      }
    }
  },
  "requires": [
    "map_core"
  ]
}

lenmax_core_emlynoregan_com

Requires: map_core.

{
  "name": "lenmax_core_emlynoregan_com",
  "transform-t": {
    "&": "reduce",
    "accum": 0,
    "t": {
      ":": {
        "!": {
          ":": {
            "&": "if",
            "cond": {
              ":": [
                "&>=",
                "^@.accum",
                "^@.itemlen"
              ]
            },
            "true": {
              ":": "^@.accum"
            },
            "false": {
              ":": "^@.itemlen"
            }
          }
        },
        "itemlen": {
          "&": "len",
          "list": "^@.item"
        }
      }
    }
  },
  "requires": [
    "map_core"
  ]
}

longest_core_emlynoregan_com

{
  "name": "longest_core_emlynoregan_com",
  "transform-t": {
    "&": "reduce",
    "accum": [],
    "t": {
      ":": {
        "&": "if",
        "cond": {
          ":": [
            "&>",
            {
              "&": "len",
              "list": "^@.item"
            },
            {
              "&": "len",
              "list": "^@.accum"
            }
          ]
        },
        "true": {
          "'": "^@.item"
        },
        "false": {
          "'": "^@.accum"
        }
      }
    }
  }
}

traverse_core_emlynoregan_com

Requires: switch, coalesce, traverse_core_emlynoregan_com.

{
  "language": "sUTL0",
  "name": "traverse_core_emlynoregan_com",
  "transform-t": {
    "!": {
      ":": {
        "&": "switch",
        "value": {
          "&": "type",
          "value": "^@.source"
        },
        "cases": [
          [
            "map",
            {
              "&": "makemap",
              "value": {
                "&": "reduce",
                "list": {
                  "&": "keys",
                  "map": "^@.source"
                },
                "accum": [],
                "t": {
                  ":": {
                    "!": {
                      ":": [
                        "&&",
                        "^@.accum",
                        [
                          [
                            "^@.item",
                            {
                              "&": "traverse_core_emlynoregan_com",
                              "source": "^@.transformedvalue"
                            }
                          ]
                        ]
                      ]
                    },
                    "transformedvalue": {
                      "!": "^@.traverse-t",
                      "key": "^@.item",
                      "value": [
                        "^@",
                        "source",
                        "^@.item"
                      ]
                    }
                  }
                }
              }
            }
          ],
          [
            "list",
            [
              "^%",
              {
                "&": "reduce",
                "list": "^@.source",
                "accum": {
                  "index": 0,
                  "result": []
                },
                "t": {
                  ":": {
                    "index": [
                      "&+",
                      "^@.index",
                      1
                    ],
                    "result": {
                      "!": {
                        ":": [
                          "&&",
                          "^@.accum.result",
                          [
                            {
                              "&": "traverse_core_emlynoregan_com",
                              "source": "^@.transformedvalue"
                            }
                          ]
                        ]
                      },
                      "transformedvalue": {
                        "!": "^@.traverse-t",
                        "key": "^@.index",
                        "value": "^@.item"
                      }
                    }
                  }
                }
              },
              "result"
            ]
          ],
          {
            "!": "^@.traverse-t",
            "value": "^@.source"
          }
        ]
      }
    },
    "traverse-tx": {
      "&": "coalesce",
      "list": [
        "^@.traverse-t",
        "^@.t"
      ]
    }
  },
  "requires": [
    "switch",
    "coalesce",
    "traverse_core_emlynoregan_com"
  ]
}

Core library contents

Source

Adapted from the sUTL source material.

Back to sUTL · Software & Agents · All topics

View page as JSON