{"path":"/sutl/core-library/part-1","content":{"title":"sUTL core library, part 1","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## map_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"map_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"list\": \"^@.list\",\n    \"map-t\": \"^@.t\",\n    \"t\": {\n      \"'\": [\n        \"&&\",\n        \"^@.accum\",\n        [\n          {\n            \"!\": \"^@.map-t\"\n          }\n        ]\n      ]\n    },\n    \"accum\": []\n  }\n}\n```\n\n## reverse_core_emlynoregan_com\n\nRequires: `reverse_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"reverse_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"if\",\n    \"cond\": \"^@.list\",\n    \"true\": {\n      \"'\": [\n        \"&&\",\n        {\n          \"!\": \"^*.reverse_core_emlynoregan_com\",\n          \"list\": [\n            \"&tail\",\n            \"^@.list\"\n          ]\n        },\n        [\n          \"&head\",\n          \"^@.list\"\n        ]\n      ]\n    },\n    \"false\": {\n      \"'\": []\n    }\n  },\n  \"requires\": [\n    \"reverse_core_emlynoregan_com\"\n  ]\n}\n```\n\n## head_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"head_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": [\n    \"&head\",\n    \"^@.list\"\n  ]\n}\n```\n\n## tail_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"tail_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": [\n    \"&tail\",\n    \"^@.list\"\n  ]\n}\n```\n\n## removenulls_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"removenulls_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"list\": \"^@.list\",\n    \"accum\": [],\n    \"t\": {\n      \"'\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \"'\": [\n            \"&!=\",\n            \"^@.item\",\n            null\n          ]\n        },\n        \"true\": {\n          \"'\": [\n            \"&&\",\n            \"^@.accum\",\n            \"^@.item\"\n          ]\n        },\n        \"false\": {\n          \"'\": \"^@.accum\"\n        }\n      }\n    }\n  }\n}\n```\n\n## count_core_emlynoregan_com\n\nRequires: `count_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"count_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"if\",\n    \"cond\": {\n      \"'\": {\n        \"&\": \"=\",\n        \"a\": \"list\",\n        \"b\": {\n          \"&\": \"type\",\n          \"value\": \"^@.obj\"\n        }\n      }\n    },\n    \"true\": {\n      \"'\": {\n        \"&\": \"reduce\",\n        \"list\": \"^@.obj\",\n        \"accum\": 0,\n        \"t\": {\n          \"'\": {\n            \"&\": \"+\",\n            \"a\": {\n              \"!\": \"^*.count_core_emlynoregan_com\",\n              \"obj\": \"^@.item\"\n            },\n            \"b\": \"^@.accum\"\n          }\n        }\n      }\n    },\n    \"false\": 1\n  },\n  \"requires\": [\n    \"count_core_emlynoregan_com\"\n  ]\n}\n```\n\n## addmaps_core_emlynoregan_com\n\nRequires: `zip`.\n\n```json\n{\n  \"name\": \"addmaps_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"makemap\",\n    \"value\": {\n      \"&\": \"zip\",\n      \"list\": [\n        [\n          \"&&\",\n          {\n            \"&\": \"keys\",\n            \"map\": \"^@.map1\"\n          },\n          {\n            \"&\": \"keys\",\n            \"map\": \"^@.map2\"\n          }\n        ],\n        [\n          \"&&\",\n          {\n            \"&\": \"values\",\n            \"map\": \"^@.map1\"\n          },\n          {\n            \"&\": \"values\",\n            \"map\": \"^@.map2\"\n          }\n        ]\n      ]\n    }\n  },\n  \"requires\": [\n    \"zip\"\n  ]\n}\n```\n\n## mapget_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"mapget_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": [\n    \"^@\",\n    \"map\",\n    [\n      \"^@\",\n      \"key\"\n    ]\n  ]\n}\n```\n\n## keys2map_core_emlynoregan_com\n\nRequires: `map_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"keys2map_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"makemap\",\n    \"value\": {\n      \"!\": \"^*.map_core_emlynoregan_com\",\n      \"list\": \"^@.list\",\n      \"t\": {\n        \"'\": [\n          \"^@.item\",\n          true\n        ]\n      }\n    }\n  },\n  \"requires\": [\n    \"map_core_emlynoregan_com\"\n  ]\n}\n```\n\n## filter_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"filter_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"list\": \"^@.list\",\n    \"accum\": [],\n    \"t\": {\n      \"'\": [\n        \"&&\",\n        \"^@.accum\",\n        {\n          \"&\": \"if\",\n          \"cond\": {\n            \"'\": {\n              \"''\": \"^@.filter-t\"\n            }\n          },\n          \"true\": [\n            \"^@.item\"\n          ],\n          \"false\": []\n        }\n      ]\n    }\n  }\n}\n```\n\n## tests_tst_emlynoregan_com\n\nRequires: `map_core_emlynoregan_com`, `test_tst_emlynoregan_com`, `removenulls_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"tests_tst_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"!\": \"^*.removenulls_core_emlynoregan_com\",\n    \"list\": {\n      \"!\": \"^*.map_core_emlynoregan_com\",\n      \"list\": \"^@.tests\",\n      \"t\": {\n        \"'\": {\n          \"!\": \"^*.test_tst_emlynoregan_com\",\n          \"test-t\": \"^@.item.test-t\",\n          \"name\": \"^@.item.name\"\n        }\n      }\n    }\n  },\n  \"requires\": [\n    \"map_core_emlynoregan_com\",\n    \"test_tst_emlynoregan_com\",\n    \"removenulls_core_emlynoregan_com\"\n  ]\n}\n```\n\n## test_tst_emlynoregan_com\n\n```json\n{\n  \"name\": \"test_tst_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"if\",\n    \"cond\": \"^@.test-t\",\n    \"true\": null,\n    \"false\": \"^@.name\"\n  }\n}\n```\n\n## asserttrue_tst_emlynoregan_com\n\n```json\n{\n  \"name\": \"asserttrue_tst_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"if\",\n    \"cond\": {\n      \"'\": {\n        \"&\": \"=\",\n        \"a\": \"^@.test-t\",\n        \"b\": true\n      }\n    },\n    \"true\": null,\n    \"false\": \"fails\"\n  }\n}\n```\n\n## isinlist_core_emlynoregan_com\n\nRequires: `hasitems_core_emlynoregan_com`, `filter_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"isinlist_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"!\": \"^*.hasitems_core_emlynoregan_com\",\n    \"list\": {\n      \"!\": \"^*.filter_core_emlynoregan_com\",\n      \"list\": \"^@.list\",\n      \"filter-t\": {\n        \"'\": {\n          \"&\": \"=\",\n          \"a\": \"^@.item\",\n          \"b\": {\n            \"''\": \"^@.item\"\n          }\n        }\n      }\n    }\n  },\n  \"requires\": [\n    \"hasitems_core_emlynoregan_com\",\n    \"filter_core_emlynoregan_com\"\n  ]\n}\n```\n\n## removekeys_core_emlynoregan_com\n\nRequires: `zip`, `map_core_emlynoregan_com`, `mapget_core_emlynoregan_com`, `subtractarrs_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"removekeys_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"makemap\",\n    \"value\": {\n      \"&\": \"zip\",\n      \"list\": [\n        {\n          \"!\": \"^*.subtractarrs_core_emlynoregan_com\",\n          \"arr1\": {\n            \"&\": \"keys\",\n            \"map\": \"^@.map\"\n          },\n          \"arr2\": \"^@.keys\"\n        },\n        {\n          \"!\": \"^*.map_core_emlynoregan_com\",\n          \"list\": {\n            \"!\": \"^*.subtractarrs_core_emlynoregan_com\",\n            \"arr1\": {\n              \"&\": \"keys\",\n              \"map\": \"^@.map\"\n            },\n            \"arr2\": \"^@.keys\"\n          },\n          \"t\": {\n            \"'\": {\n              \"!\": \"^*.mapget_core_emlynoregan_com\",\n              \"map\": {\n                \":\": {\n                  \"''\": \"^@.map\"\n                }\n              },\n              \"key\": \"^@.item\"\n            }\n          }\n        }\n      ]\n    }\n  },\n  \"requires\": [\n    \"zip\",\n    \"map_core_emlynoregan_com\",\n    \"mapget_core_emlynoregan_com\",\n    \"subtractarrs_core_emlynoregan_com\"\n  ]\n}\n```\n\n## subtractarrs_core_emlynoregan_com\n\nRequires: `isinlist_core_emlynoregan_com`, `filter_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"subtractarrs_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"!\": \"^*.filter_core_emlynoregan_com\",\n    \"list\": \"^@.arr1\",\n    \"filter-t\": {\n      \"'\": {\n        \"&\": \"!\",\n        \"b\": {\n          \"!\": \"^*.isinlist_core_emlynoregan_com\",\n          \"list\": {\n            \"''\": \"^@.arr2\"\n          },\n          \"item\": \"^@.item\"\n        }\n      }\n    }\n  },\n  \"requires\": [\n    \"isinlist_core_emlynoregan_com\",\n    \"filter_core_emlynoregan_com\"\n  ]\n}\n```\n\n## pipeline_core_emlynoregan_com\n\nRequires: `reduce_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"pipeline_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"list\": \"^@.list-t\",\n    \"t\": {\n      \"'\": {\n        \"!\": \"^@.item\",\n        \"p\": \"^@.accum\"\n      }\n    }\n  },\n  \"requires\": [\n    \"reduce_core_emlynoregan_com\"\n  ]\n}\n```\n\n## hasitems_core_emlynoregan_com\n\nRequires: `hasitems_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"hasitems_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"if\",\n    \"cond\": {\n      \"'\": {\n        \"&\": \"=\",\n        \"a\": \"list\",\n        \"b\": {\n          \"&\": \"type\",\n          \"value\": \"^@.list\"\n        }\n      }\n    },\n    \"true\": {\n      \"'\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \"'\": {\n            \"&\": \">\",\n            \"a\": {\n              \"&\": \"len\",\n              \"list\": \"^@.list\"\n            },\n            \"b\": 0\n          }\n        },\n        \"true\": {\n          \"'\": {\n            \"&\": \"if\",\n            \"cond\": {\n              \"'\": {\n                \"!\": \"^*.hasitems_core_emlynoregan_com\",\n                \"list\": {\n                  \"''\": {\n                    \"&\": \"head\",\n                    \"b\": \"^@.list\"\n                  }\n                }\n              }\n            },\n            \"true\": true,\n            \"false\": {\n              \"'\": {\n                \"!\": \"^*.hasitems_core_emlynoregan_com\",\n                \"list\": {\n                  \"''\": {\n                    \"&\": \"tail\",\n                    \"b\": \"^@.list\"\n                  }\n                }\n              }\n            }\n          }\n        },\n        \"false\": false\n      }\n    },\n    \"false\": {\n      \"&\": \"!=\",\n      \"a\": \"^@.list\",\n      \"b\": null\n    }\n  },\n  \"requires\": [\n    \"hasitems_core_emlynoregan_com\"\n  ]\n}\n```\n\n## zip_core_emlynoregan_com\n\nRequires: `foldone_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"zip_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"list\": \"^@.list\",\n    \"accum\": [],\n    \"t\": {\n      \"'\": {\n        \"!\": \"^*.foldone_core_emlynoregan_com\",\n        \"lists\": \"^@.accum\",\n        \"list\": \"^@.item\"\n      }\n    }\n  },\n  \"requires\": [\n    \"foldone_core_emlynoregan_com\"\n  ]\n}\n```\n\n## foldone_core_emlynoregan_com\n\nRequires: `head_core_emlynoregan_com`, `tail_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"foldone_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"!\": \"^*.head_core_emlynoregan_com\",\n    \"list\": {\n      \"&\": \"reduce\",\n      \"accum\": [\n        [],\n        \"^@.lists\"\n      ],\n      \"list\": \"^@.list\",\n      \"t\": {\n        \"'\": [\n          [\n            \"&&\",\n            \"^@.accum.0\",\n            [\n              [\n                \"&&\",\n                {\n                  \"&\": \"if\",\n                  \"cond\": {\n                    \"'\": {\n                      \"&\": \"len\",\n                      \"list\": \"^@.accum.1\"\n                    }\n                  },\n                  \"true\": {\n                    \"!\": \"^*.head_core_emlynoregan_com\",\n                    \"list\": \"^@.accum.1\"\n                  },\n                  \"false\": []\n                },\n                [\n                  \"^@.item\"\n                ]\n              ]\n            ]\n          ],\n          {\n            \"!\": \"^*.tail_core_emlynoregan_com\",\n            \"list\": \"^@.accum.1\"\n          }\n        ]\n      }\n    }\n  },\n  \"requires\": [\n    \"head_core_emlynoregan_com\",\n    \"tail_core_emlynoregan_com\"\n  ]\n}\n```\n\n## splitmap_core_emlynoregan_com\n\nRequires: `map_core_emlynoregan_com`, `mapget_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"splitmap_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"!\": \"^*.map_core_emlynoregan_com\",\n    \"list\": {\n      \"&\": \"keys\",\n      \"map\": \"^@.map\"\n    },\n    \"t\": {\n      \"'\": {\n        \"&\": \"makemap\",\n        \"value\": [\n          [\n            \"^@.item\",\n            {\n              \"!\": \"^*.mapget_core_emlynoregan_com\",\n              \"map\": {\n                \"''\": \"^@.map\"\n              },\n              \"key\": \"^@.item\"\n            }\n          ]\n        ]\n      }\n    }\n  },\n  \"requires\": [\n    \"map_core_emlynoregan_com\",\n    \"mapget_core_emlynoregan_com\"\n  ]\n}\n```\n\n## removenovaluemaps_core_emlynoregan_com\n\nRequires: `filter_core_emlynoregan_com`, `splitmap_core_emlynoregan_com`, `head_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"removenovaluemaps_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"!\": \"^*.filter_core_emlynoregan_com\",\n    \"list\": {\n      \"!\": \"^*.splitmap_core_emlynoregan_com\",\n      \"map\": \"^@.map\"\n    },\n    \"filter-t\": {\n      \"'\": {\n        \"&\": \"!=\",\n        \"a\": {\n          \"!\": \"^*.head_core_emlynoregan_com\",\n          \"list\": {\n            \"&\": \"values\",\n            \"map\": \"^@.item\"\n          }\n        },\n        \"b\": null\n      }\n    }\n  },\n  \"requires\": [\n    \"filter_core_emlynoregan_com\",\n    \"splitmap_core_emlynoregan_com\",\n    \"head_core_emlynoregan_com\"\n  ]\n}\n```\n\n## removenullattribs_core_emlynoregan_com\n\nRequires: `removenovaluemaps_core_emlynoregan_com`, `reduce_core_emlynoregan_com`, `addmaps_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"removenullattribs_core_emlynoregan_com\",\n  \"language\": \"sUTL0\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"accum\": {},\n    \"list\": {\n      \"!\": \"^*.removenovaluemaps_core_emlynoregan_com\",\n      \"map\": \"^@.map\"\n    },\n    \"t\": {\n      \"'\": {\n        \"!\": \"^*.addmaps_core_emlynoregan_com\",\n        \"map1\": \"^@.accum\",\n        \"map2\": \"^@.item\"\n      }\n    }\n  },\n  \"requires\": [\n    \"removenovaluemaps_core_emlynoregan_com\",\n    \"reduce_core_emlynoregan_com\",\n    \"addmaps_core_emlynoregan_com\"\n  ]\n}\n```\n\n## removedupstrarr_core_emlynoregan_com\n\nRequires: `zip`.\n\n```json\n{\n  \"language\": \"sUTL0\",\n  \"name\": \"removedupstrarr_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"keys\",\n    \"map\": {\n      \"&\": \"makemap\",\n      \"value\": {\n        \"&\": \"zip\",\n        \"list\": [\n          \"^@.list\",\n          \"^@.list\"\n        ]\n      }\n    }\n  },\n  \"requires\": [\n    \"zip\"\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"}}