{"path":"/sutl/core-library/part-4","content":{"title":"sUTL core library, part 4","summary":"Named reusable transforms, with full declarations and explicit dependency lists.","body":"[sUTL](/sutl) · [Guide](/sutl/guide) · [Reference](/sutl/reference) · [Examples](/sutl/examples)\n\nThese 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](/sutl/guide/declarations-and-libraries).\n\n## applynewdiff_core_emlynoregan_com\n\nRequires: `applynewdiff`, `when`, `removedupstrarr`, `map_core`, `longest`.\n\n```json\n{\n  \"name\": \"applynewdiff_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"!\": {\n      \":\": {\n        \"&\": \"when\",\n        \"cases\": [\n          [\n            {\n              \":\": [\n                \"&=\",\n                null,\n                \"^@.diff\"\n              ]\n            },\n            {\n              \":\": \"^@.old\"\n            }\n          ],\n          [\n            {\n              \":\": [\n                \"&!=\",\n                \"^@.oldtype\",\n                \"^@.difftype\"\n              ]\n            },\n            {\n              \":\": \"^@.diff\"\n            }\n          ],\n          [\n            {\n              \":\": [\n                \"&=\",\n                \"^@.difftype\",\n                \"map\"\n              ]\n            },\n            {\n              \":\": {\n                \"!\": {\n                  \":\": {\n                    \"&\": \"makemap\",\n                    \"value\": {\n                      \"&\": \"map_core\",\n                      \"list\": \"^@.keys\",\n                      \"t\": {\n                        \":\": [\n                          \"^@.item\",\n                          {\n                            \"&\": \"applynewdiff\",\n                            \"old\": [\n                              \"^@\",\n                              \"old\",\n                              \"^@.item\"\n                            ],\n                            \"diff\": [\n                              \"^@\",\n                              \"diff\",\n                              \"^@.item\"\n                            ]\n                          }\n                        ]\n                      }\n                    }\n                  }\n                },\n                \"keys\": {\n                  \"&\": \"removedupstrarr\",\n                  \"list\": [\n                    \"&&\",\n                    {\n                      \"&\": \"keys\",\n                      \"map\": \"^@.old\"\n                    },\n                    {\n                      \"&\": \"keys\",\n                      \"map\": \"^@.diff\"\n                    }\n                  ]\n                }\n              }\n            }\n          ],\n          [\n            {\n              \":\": [\n                \"&=\",\n                \"^@.difftype\",\n                \"list\"\n              ]\n            },\n            {\n              \":\": {\n                \"!\": {\n                  \":\": [\n                    \"^%\",\n                    {\n                      \"&\": \"reduce\",\n                      \"accum\": {\n                        \"index\": 0,\n                        \"result\": []\n                      },\n                      \"list\": \"^@.longestlist\",\n                      \"t\": {\n                        \":\": {\n                          \"index\": [\n                            \"&+\",\n                            \"^@.accum.index\",\n                            1\n                          ],\n                          \"result\": [\n                            \"&&\",\n                            \"^@.accum.result\",\n                            {\n                              \"&\": \"applynewdiff\",\n                              \"old\": [\n                                \"^@\",\n                                \"old\",\n                                \"^@.accum.index\"\n                              ],\n                              \"diff\": [\n                                \"^@\",\n                                \"diff\",\n                                \"^@.accum.index\"\n                              ]\n                            }\n                          ]\n                        }\n                      }\n                    },\n                    \"result\"\n                  ]\n                },\n                \"longestlist\": {\n                  \"&\": \"longest\",\n                  \"list\": [\n                    \"^@.old\",\n                    \"^@.diff\"\n                  ]\n                }\n              }\n            }\n          ],\n          {\n            \":\": \"^@.diff\"\n          }\n        ]\n      }\n    },\n    \"oldtype\": {\n      \"&\": \"type\",\n      \"value\": \"^@.old\"\n    },\n    \"difftype\": {\n      \"&\": \"type\",\n      \"value\": \"^@.diff\"\n    }\n  },\n  \"requires\": [\n    \"applynewdiff\",\n    \"when\",\n    \"removedupstrarr\",\n    \"map_core\",\n    \"longest\"\n  ]\n}\n```\n\n## combine_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"combine_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"list\": \"^@.list\",\n    \"accum\": null,\n    \"t\": {\n      \":\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \":\": \"^@.accum\"\n        },\n        \"false\": {\n          \":\": \"^@.item\"\n        },\n        \"true\": {\n          \":\": {\n            \"&\": \"makemap\",\n            \"value\": [\n              [\n                \"!!\",\n                {\n                  \"&\": \"makemap\",\n                  \"value\": [\n                    [\n                      \":\",\n                      \"^@.item\"\n                    ]\n                  ]\n                }\n              ],\n              [\n                \"s\",\n                \"^@.accum\"\n              ]\n            ]\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n## declcombine_core_emlynoregan_com\n\nRequires: `combine`, `keys2map`.\n\n```json\n{\n  \"name\": \"declcombine_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"transform-t\": {\n      \"&\": \"combine\",\n      \"list\": \"&@.list.*.transform-t\"\n    },\n    \"requires\": {\n      \"&\": \"keys\",\n      \"map\": {\n        \"&\": \"keys2map\",\n        \"list\": {\n          \"!\": {\n            \"&\": \"reduce\",\n            \"list\": \"&@.list.*.requires\",\n            \"accum\": {\n              \":\": [\n                \"&&\"\n              ]\n            },\n            \"t\": {\n              \":\": [\n                \"&&\",\n                \"^@.accum\",\n                \"^@.item\"\n              ]\n            }\n          }\n        }\n      }\n    }\n  },\n  \"requires\": [\n    \"combine\",\n    \"keys2map\"\n  ]\n}\n```\n\n## max_core_emlynoregan_com\n\nRequires: `map_core`.\n\n```json\n{\n  \"name\": \"max_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"accum\": 0,\n    \"t\": {\n      \":\": {\n        \"!\": {\n          \":\": {\n            \"&\": \"if\",\n            \"cond\": {\n              \":\": [\n                \"&>=\",\n                \"^@.accum\",\n                \"^@.item\"\n              ]\n            },\n            \"true\": {\n              \":\": \"^@.accum\"\n            },\n            \"false\": {\n              \":\": \"^@.item\"\n            }\n          }\n        }\n      }\n    }\n  },\n  \"requires\": [\n    \"map_core\"\n  ]\n}\n```\n\n## lenmax_core_emlynoregan_com\n\nRequires: `map_core`.\n\n```json\n{\n  \"name\": \"lenmax_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"accum\": 0,\n    \"t\": {\n      \":\": {\n        \"!\": {\n          \":\": {\n            \"&\": \"if\",\n            \"cond\": {\n              \":\": [\n                \"&>=\",\n                \"^@.accum\",\n                \"^@.itemlen\"\n              ]\n            },\n            \"true\": {\n              \":\": \"^@.accum\"\n            },\n            \"false\": {\n              \":\": \"^@.itemlen\"\n            }\n          }\n        },\n        \"itemlen\": {\n          \"&\": \"len\",\n          \"list\": \"^@.item\"\n        }\n      }\n    }\n  },\n  \"requires\": [\n    \"map_core\"\n  ]\n}\n```\n\n## longest_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"longest_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"accum\": [],\n    \"t\": {\n      \":\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \":\": [\n            \"&>\",\n            {\n              \"&\": \"len\",\n              \"list\": \"^@.item\"\n            },\n            {\n              \"&\": \"len\",\n              \"list\": \"^@.accum\"\n            }\n          ]\n        },\n        \"true\": {\n          \"'\": \"^@.item\"\n        },\n        \"false\": {\n          \"'\": \"^@.accum\"\n        }\n      }\n    }\n  }\n}\n```\n\n## traverse_core_emlynoregan_com\n\nRequires: `switch`, `coalesce`, `traverse_core_emlynoregan_com`.\n\n```json\n{\n  \"language\": \"sUTL0\",\n  \"name\": \"traverse_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"!\": {\n      \":\": {\n        \"&\": \"switch\",\n        \"value\": {\n          \"&\": \"type\",\n          \"value\": \"^@.source\"\n        },\n        \"cases\": [\n          [\n            \"map\",\n            {\n              \"&\": \"makemap\",\n              \"value\": {\n                \"&\": \"reduce\",\n                \"list\": {\n                  \"&\": \"keys\",\n                  \"map\": \"^@.source\"\n                },\n                \"accum\": [],\n                \"t\": {\n                  \":\": {\n                    \"!\": {\n                      \":\": [\n                        \"&&\",\n                        \"^@.accum\",\n                        [\n                          [\n                            \"^@.item\",\n                            {\n                              \"&\": \"traverse_core_emlynoregan_com\",\n                              \"source\": \"^@.transformedvalue\"\n                            }\n                          ]\n                        ]\n                      ]\n                    },\n                    \"transformedvalue\": {\n                      \"!\": \"^@.traverse-t\",\n                      \"key\": \"^@.item\",\n                      \"value\": [\n                        \"^@\",\n                        \"source\",\n                        \"^@.item\"\n                      ]\n                    }\n                  }\n                }\n              }\n            }\n          ],\n          [\n            \"list\",\n            [\n              \"^%\",\n              {\n                \"&\": \"reduce\",\n                \"list\": \"^@.source\",\n                \"accum\": {\n                  \"index\": 0,\n                  \"result\": []\n                },\n                \"t\": {\n                  \":\": {\n                    \"index\": [\n                      \"&+\",\n                      \"^@.index\",\n                      1\n                    ],\n                    \"result\": {\n                      \"!\": {\n                        \":\": [\n                          \"&&\",\n                          \"^@.accum.result\",\n                          [\n                            {\n                              \"&\": \"traverse_core_emlynoregan_com\",\n                              \"source\": \"^@.transformedvalue\"\n                            }\n                          ]\n                        ]\n                      },\n                      \"transformedvalue\": {\n                        \"!\": \"^@.traverse-t\",\n                        \"key\": \"^@.index\",\n                        \"value\": \"^@.item\"\n                      }\n                    }\n                  }\n                }\n              },\n              \"result\"\n            ]\n          ],\n          {\n            \"!\": \"^@.traverse-t\",\n            \"value\": \"^@.source\"\n          }\n        ]\n      }\n    },\n    \"traverse-tx\": {\n      \"&\": \"coalesce\",\n      \"list\": [\n        \"^@.traverse-t\",\n        \"^@.t\"\n      ]\n    }\n  },\n  \"requires\": [\n    \"switch\",\n    \"coalesce\",\n    \"traverse_core_emlynoregan_com\"\n  ]\n}\n```\n\n\n[Core library contents](/sutl/core-library)\n\n## Source\n\nAdapted from [the sUTL source material](https://github.com/emlynoregan/sutl-language/blob/0c3463677495ea00767f8266ae900eb4e2f98617/core-library.json).\n\n[Back to sUTL](/sutl) · [Software & Agents](/topics/software-and-agents) · [All topics](/guide)","author":"Emlyn O'Regan"}}