{"path":"/sutl/core-library/part-2","content":{"title":"sUTL core library, part 2","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## quicksort_core_emlynoregan_com\n\nRequires: `quicksort_core_emlynoregan_com`, `qsfilter_core_emlynoregan_com`.\n\n```json\n{\n  \"language\": \"sUTL0\",\n  \"name\": \"quicksort_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"if\",\n    \"cond\": {\n      \"'\": \"^@.list\"\n    },\n    \"true\": {\n      \"'\": [\n        \"&&\",\n        {\n          \"!\": \"^*.quicksort_core_emlynoregan_com\",\n          \"list\": {\n            \"!\": \"^*.qsfilter_core_emlynoregan_com\",\n            \"list\": \"^@.list\",\n            \"left\": true,\n            \"sortkey\": \"^@.sortkey\"\n          }\n        },\n        [\n          {\n            \"&\": \"head\",\n            \"b\": \"^@.list\"\n          }\n        ],\n        {\n          \"!\": \"^*.quicksort_core_emlynoregan_com\",\n          \"list\": {\n            \"!\": \"^*.qsfilter_core_emlynoregan_com\",\n            \"list\": \"^@.list\",\n            \"left\": false,\n            \"sortkey\": \"^@.sortkey\"\n          }\n        }\n      ]\n    },\n    \"false\": []\n  },\n  \"requires\": [\n    \"quicksort_core_emlynoregan_com\",\n    \"qsfilter_core_emlynoregan_com\"\n  ]\n}\n```\n\n## qsfilter_core_emlynoregan_com\n\nRequires: `filter_core_emlynoregan_com`.\n\n```json\n{\n  \"language\": \"sUTL0\",\n  \"name\": \"qsfilter_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"!\": \"^*.filter_core_emlynoregan_com\",\n    \"list\": {\n      \"&\": \"tail\",\n      \"b\": \"^@.list\"\n    },\n    \"head\": {\n      \"&\": \"head\",\n      \"b\": \"^@.list\"\n    },\n    \"filter-t\": {\n      \"'\": {\n        \"!\": [\n          {\n            \"&\": \"if\",\n            \"cond\": {\n              \"'\": \"^@.left\"\n            },\n            \"true\": {\n              \"'\": {\n                \"'\": \"&<\"\n              }\n            },\n            \"false\": {\n              \"'\": {\n                \"'\": \"&>=\"\n              }\n            }\n          },\n          {\n            \"!\": [\n              \"&&\",\n              {\n                \"'\": \"^%\"\n              },\n              [\n                \"^@.item\"\n              ],\n              \"^@.keypath\"\n            ]\n          },\n          {\n            \"!\": [\n              \"&&\",\n              {\n                \"'\": \"^%\"\n              },\n              [\n                \"^@.head\"\n              ],\n              \"^@.keypath\"\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"requires\": [\n    \"filter_core_emlynoregan_com\"\n  ]\n}\n```\n\n## idlisttomap_core_emlynoregan_com\n\nRequires: `map_core_emlynoregan_com`.\n\n```json\n{\n  \"name\": \"idlisttomap_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"makemap\",\n    \"value\": {\n      \"!\": \"^*.map_core_emlynoregan_com\",\n      \"list\": \"^@.list\",\n      \"t\": {\n        \"'\": [\n          {\n            \"!\": [\n              \"&&\",\n              {\n                \"'\": \"^%\"\n              },\n              [\n                \"^@.item\"\n              ],\n              \"^@.keypath\"\n            ]\n          },\n          \"^@.item\"\n        ]\n      }\n    }\n  },\n  \"requires\": [\n    \"map_core_emlynoregan_com\"\n  ]\n}\n```\n\n## join_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"join_core_emlynoregan_com\",\n  \"transform-t\": [\n    \"^%\",\n    {\n      \"!\": {\n        \"'\": {\n          \"&\": \"if\",\n          \"cond\": {\n            \"'\": \"^@.list\"\n          },\n          \"false\": null,\n          \"true\": {\n            \"'\": {\n              \"&\": \"reduce\",\n              \"list\": \"^@.list\",\n              \"accum\": {\n                \"index\": 0,\n                \"result\": \"\"\n              },\n              \"t\": {\n                \"'\": {\n                  \"&\": \"if\",\n                  \"cond\": {\n                    \"'\": [\n                      \"&=\",\n                      \"^@.accum.index\",\n                      0\n                    ]\n                  },\n                  \"true\": {\n                    \"'\": {\n                      \"index\": 1,\n                      \"result\": \"^@.item\"\n                    }\n                  },\n                  \"false\": {\n                    \"'\": {\n                      \"&\": \"if\",\n                      \"cond\": {\n                        \"'\": [\n                          \"&=\",\n                          \"^@.listlen\",\n                          [\n                            \"&+\",\n                            \"^@.accum.index\",\n                            1\n                          ]\n                        ]\n                      },\n                      \"true\": {\n                        \"'\": {\n                          \"index\": [\n                            \"&+\",\n                            \"^@.accum.index\",\n                            1\n                          ],\n                          \"result\": [\n                            \"&+\",\n                            \"^@.accum.result\",\n                            \"^@.lastseparator\",\n                            \"^@.item\"\n                          ]\n                        }\n                      },\n                      \"false\": {\n                        \"'\": {\n                          \"index\": [\n                            \"&+\",\n                            \"^@.accum.index\",\n                            1\n                          ],\n                          \"result\": [\n                            \"&+\",\n                            \"^@.accum.result\",\n                            \"^@.separator\",\n                            \"^@.item\"\n                          ]\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n      \"separator\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \"'\": \"^@.separator\"\n        },\n        \"true\": {\n          \"'\": \"^@.separator\"\n        },\n        \"false\": \", \"\n      },\n      \"lastseparator\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \"'\": \"^@.lastseparator\"\n        },\n        \"true\": {\n          \"'\": \"^@.lastseparator\"\n        },\n        \"false\": {\n          \"'\": {\n            \"&\": \"if\",\n            \"cond\": {\n              \"'\": \"^@.separator\"\n            },\n            \"true\": {\n              \"'\": \"^@.separator\"\n            },\n            \"false\": \" and \"\n          }\n        }\n      },\n      \"listlen\": {\n        \"&\": \"len\",\n        \"list\": \"^@.list\"\n      }\n    },\n    \"result\"\n  ]\n}\n```\n\n## slice_core_emlynoregan_com\n\n```json\n{\n  \"name\": \"slice_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"!\": {\n      \"'\": {\n        \"!\": {\n          \"'\": [\n            \"^%\",\n            {\n              \"&\": \"reduce\",\n              \"list\": \"^@.list\",\n              \"accum\": {\n                \"index\": 0,\n                \"result\": []\n              },\n              \"t\": {\n                \"'\": {\n                  \"&\": \"if\",\n                  \"cond\": {\n                    \"'\": [\n                      \"&&&\",\n                      [\n                        \"&>=\",\n                        \"^@.accum.index\",\n                        \"^@.start\"\n                      ],\n                      [\n                        \"&<\",\n                        \"^@.accum.index\",\n                        \"^@.stop\"\n                      ]\n                    ]\n                  },\n                  \"true\": {\n                    \"'\": {\n                      \"index\": [\n                        \"&+\",\n                        \"^@.accum.index\",\n                        1\n                      ],\n                      \"result\": [\n                        \"&&\",\n                        \"^@.accum.result\",\n                        \"^@.item\"\n                      ]\n                    }\n                  },\n                  \"false\": {\n                    \"'\": {\n                      \"index\": [\n                        \"&+\",\n                        \"^@.accum.index\",\n                        1\n                      ],\n                      \"result\": \"^@.accum.result\"\n                    }\n                  }\n                }\n              }\n            },\n            \"result\"\n          ]\n        },\n        \"start\": {\n          \"!\": \"^@.fixarg\",\n          \"arg\": \"^@.start\",\n          \"defaultarg\": 0\n        },\n        \"stop\": {\n          \"!\": \"^@.fixarg\",\n          \"arg\": \"^@.stop\",\n          \"defaultarg\": {\n            \"&\": \"len\",\n            \"list\": \"^@.list\"\n          }\n        }\n      }\n    },\n    \"fixarg\": {\n      \"'\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \"'\": \"^@.arg\"\n        },\n        \"true\": {\n          \"'\": {\n            \"&\": \"if\",\n            \"cond\": {\n              \"'\": [\n                \"&<\",\n                \"^@.arg\",\n                0\n              ]\n            },\n            \"true\": {\n              \"'\": [\n                \"&+\",\n                {\n                  \"&\": \"len\",\n                  \"list\": \"^@.list\"\n                },\n                \"^@.arg\"\n              ]\n            },\n            \"false\": {\n              \"'\": \"^@.arg\"\n            }\n          }\n        },\n        \"false\": \"^@.defaultarg\"\n      }\n    }\n  }\n}\n```\n\n## coalesce_core_emlynoregan_com\n\n```json\n{\n  \"language\": \"sUTL0\",\n  \"name\": \"coalesce_core_emlynoregan_com\",\n  \"transform-t\": {\n    \"&\": \"reduce\",\n    \"list\": \"^@.list\",\n    \"accum\": null,\n    \"t\": {\n      \"'\": {\n        \"&\": \"if\",\n        \"cond\": {\n          \"'\": [\n            \"&!=\",\n            \"^@.accum\",\n            null\n          ]\n        },\n        \"true\": {\n          \"'\": \"^@.accum\"\n        },\n        \"false\": {\n          \"'\": \"^@.item\"\n        }\n      }\n    }\n  }\n}\n```\n\n## switch_core_emlynoregan_com\n\nRequires: `isinlist`.\n\n```json\n{\n  \"name\": \"switch_core_emlynoregan_com\",\n  \"transform-t\": [\n    \"^%\",\n    {\n      \"&\": \"reduce\",\n      \"list\": \"^@.cases\",\n      \"accum\": {\n        \"found\": false,\n        \"result\": null\n      },\n      \"t\": {\n        \"'\": {\n          \"&\": \"if\",\n          \"cond\": {\n            \"'\": \"^@.accum.found\"\n          },\n          \"true\": {\n            \"'\": \"^@.accum\"\n          },\n          \"false\": {\n            \"'\": {\n              \"&\": \"if\",\n              \"cond\": {\n                \"'\": [\n                  \"&&&\",\n                  [\n                    \"&=\",\n                    {\n                      \"&\": \"type\",\n                      \"value\": \"^@.item\"\n                    },\n                    \"list\"\n                  ],\n                  [\n                    \"&=\",\n                    {\n                      \"&\": \"len\",\n                      \"list\": \"^@.item\"\n                    },\n                    2\n                  ]\n                ]\n              },\n              \"true\": {\n                \"'\": {\n                  \"&\": \"if\",\n                  \"cond\": {\n                    \"'\": [\n                      \"&=\",\n                      {\n                        \"&\": \"type\",\n                        \"value\": \"^@.item.0\"\n                      },\n                      \"list\"\n                    ]\n                  },\n                  \"true\": {\n                    \"'\": {\n                      \"&\": \"if\",\n                      \"cond\": {\n                        \"'\": {\n                          \"!\": \"^*.isinlist\",\n                          \"list\": \"^@.item.0\",\n                          \"item\": \"^@.value\"\n                        }\n                      },\n                      \"true\": {\n                        \"'\": {\n                          \"found\": true,\n                          \"result\": \"^@.item.1\"\n                        }\n                      },\n                      \"false\": {\n                        \"'\": \"^@.accum\"\n                      }\n                    }\n                  },\n                  \"false\": {\n                    \"'\": {\n                      \"&\": \"if\",\n                      \"cond\": {\n                        \"'\": [\n                          \"&=\",\n                          \"^@.item.0\",\n                          \"^@.value\"\n                        ]\n                      },\n                      \"true\": {\n                        \"'\": {\n                          \"found\": true,\n                          \"result\": \"^@.item.1\"\n                        }\n                      },\n                      \"false\": {\n                        \"'\": \"^@.accum\"\n                      }\n                    }\n                  }\n                }\n              },\n              \"false\": {\n                \"'\": {\n                  \"found\": true,\n                  \"result\": \"^@.item\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"result\"\n  ],\n  \"requires\": [\n    \"isinlist\"\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"}}