{ Let prim_arity name. Match (MAP.search prim_arities name) | `just.{_ arity} arity | `nothing (die (STRING.concat ["No such primitive \"" name "\"."])) ; } Where Let prim_arities. Let construct_map arity_list. (LIST.reduce arity_list MAP.empty Func map arity. (MAP.insert map arity)) In (construct_map [ {"die" 1} {"file_create" 1} {"file_open" 1} {"file_close" 1} {"file_read_all" 1} {"file_write" 2} {"string_length" 1} {"string_fetch" 2} {"string_equal" 2} {"string_compare" 2} {"string_append" 2} {"string_clip" 3} {"negate" 1} {"ref_new" 1} {"ref_fetch" 1} {"ref_store" 2} {"multiply" 2} {"add" 2} {"less" 2} {"less_or_equal" 2} {"greater" 2} {"greater_or_equal" 2} {"equal" 2} {"cons" 2} {"print_line" 1} {"show_integer" 1} ]) Where Let MAP. (SEARCH.MAP STRING.compare Func {key _}. key) Let die. Prim die Where Let LIST. Package "list" Let SEARCH. Package "search" Let STRING. Package "string"