{"path":"/sutl/core-library/part-5","content":{"title":"sUTL core library, part 5","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## filttrav_core_emlynoregan_com\n\nRequires: `switch`, `coalesce`, `filttrav_core_emlynoregan_com`.\n\n```json\n{\n  \"language\": \"sUTL0\",\n  \"name\": \"filttrav_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                        \"&\": \"if\",\n                        \"cond\": {\n                          \":\": \"^@.keepvalue\"\n                        },\n                        \"true\": {\n                          \":\": [\n                            \"&&\",\n                            \"^@.accum\",\n                            [\n                              [\n                                \"^@.item\",\n                                {\n                                  \"&\": \"filttrav_core_emlynoregan_com\",\n                                  \"source\": [\n                                    \"^@\",\n                                    \"source\",\n                                    \"^@.item\"\n                                  ]\n                                }\n                              ]\n                            ]\n                          ]\n                        },\n                        \"false\": {\n                          \":\": \"^@.accum\"\n                        }\n                      }\n                    },\n                    \"keepvalue\": {\n                      \"!\": \"^@.filter-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                          \"&\": \"if\",\n                          \"cond\": {\n                            \":\": \"^@.keepvalue\"\n                          },\n                          \"true\": {\n                            \":\": [\n                              \"&&\",\n                              \"^@.accum.result\",\n                              {\n                                \"&\": \"filttrav_core_emlynoregan_com\",\n                                \"source\": \"^@.item\"\n                              }\n                            ]\n                          },\n                          \"false\": {\n                            \":\": \"^@.accum.result\"\n                          }\n                        }\n                      },\n                      \"keepvalue\": {\n                        \"!\": \"^@.filter-t\",\n                        \"key\": \"^@.index\",\n                        \"value\": \"^@.item\"\n                      }\n                    }\n                  }\n                }\n              },\n              \"result\"\n            ]\n          ],\n          \"^@.source\"\n        ]\n      }\n    },\n    \"filter-t\": {\n      \"&\": \"coalesce\",\n      \"list\": [\n        \"^@.filter-t\",\n        \"^@.t\"\n      ]\n    }\n  },\n  \"requires\": [\n    \"switch\",\n    \"coalesce\",\n    \"filttrav_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"}}