{ : encode_small_integer : prim_arity : prim_short_name } Where Define (encode_small_integer n) [2 * n] Define (prim_arity name) Match (MAP.search prim_arities name) { | 'just.{_ arity} arity | 'nothing (die (STRING.concat ["No such primitive \"" & name & "\"." & 'nil])) } Define (prim_short_name name) Match (MAP.search prim_short_names name) { | 'just.{_ short_name} short_name | 'nothing (die (STRING.concat ["No such primitive \"" & name & "\"." & 'nil])) } Where Let prim_arities Define (construct_map arity_list) (LIST.reduce arity_list MAP.empty MAP.insert) In (construct_map (Reduce & {"exec" 4} {"exit" 1} {"getcwd" 0} {"open" 3} {"close" 1} {"read" 4} {"write" 4} {"die" 1} {"command_argc" 0} {"command_argv" 1} {"file_create" 1} {"file_open" 1} {"file_close" 1} {"file_read_all" 1} {"string_length" 1} {"string_fetch" 2} {"string_equal" 2} {"string_compare" 2} {"string_append" 2} {"string_clip" 3} {"mmap" 6} {"munmap" 1} {"epoll_create1" 1} {"epoll_ctl" 4} {"epoll_wait" 4} {"chunk_global" 1} {"chunk_new" 1} {"chunk_size" 1} {"chunk_store_bytes" 5} {"chunk_fetch_bytes_ro" 3} {"chunk_fetch_bytes_rw" 3} {"chunk_store_uint8" 3} {"chunk_fetch_uint8" 2} {"chunk_store_int8" 3} {"chunk_fetch_int8" 2} {"chunk_store_uint16_le" 3} {"chunk_fetch_uint16_le" 2} {"chunk_store_int16_le" 3} {"chunk_fetch_int16_le" 2} {"chunk_store_uint32_le" 3} {"chunk_fetch_uint32_le" 2} {"chunk_store_int32_le" 3} {"chunk_fetch_int32_le" 2} {"chunk_store_uint64_le" 3} {"chunk_fetch_uint64_le" 2} {"chunk_store_int64_le" 3} {"chunk_fetch_int64_le" 2} {"negate" 1} {"quotient" 2} {"remainder" 2} {"multiply" 2} {"add" 2} {"subtract" 2} {"less" 2} {"less_or_equal" 2} {"greater" 2} {"greater_or_equal" 2} {"equal" 2} {"print" 1} {"print_line" 1} {"show_integer" 1} {"compose" 2} 'nil)) Let prim_short_names Define (construct_map list) (LIST.reduce list MAP.empty MAP.insert) In (construct_map (Reduce & {"exec" "s00"} {"exit" "s05"} {"getcwd" "s85"} {"open" "s03"} {"close" "s72"} {"read" "s67"} {"write" "s41"} {"die" "s26"} {"command_argc" "s40"} {"command_argv" "s24"} {"print" "s18"} {"print_line" "s79"} {"file_create" "s20"} {"file_open" "s23"} {"file_close" "s92"} {"file_read_all" "s28"} {"show_integer" "s12"} {"compose" "s22"} {"multiply" "s93"} {"add" "s19"} {"subtract" "s47"} {"negate" "s84"} {"quotient" "s91"} {"remainder" "s43"} {"equal" "s50"} {"less" "s10"} {"less_or_equal" "s63"} {"greater" "s61"} {"greater_or_equal" "s55"} {"string_length" "s65"} {"string_fetch" "s69"} {"string_compare" "s37"} {"string_equal" "s45"} {"string_append" "s25"} {"string_clip" "s44"} {"mmap" "s95"} {"munmap" "s56"} {"epoll_create1" "s71"} {"epoll_ctl" "s60"} {"epoll_wait" "s97"} {"chunk_global" "s04"} {"chunk_new" "s38"} {"chunk_size" "s14"} {"chunk_store_bytes" "s82"} {"chunk_fetch_bytes_ro" "s11"} {"chunk_fetch_bytes_rw" "s39"} {"chunk_store_uint8" "s42"} {"chunk_fetch_uint8" "s13"} {"chunk_store_int8" "s76"} {"chunk_fetch_int8" "s46"} {"chunk_store_uint16_le" "s54"} {"chunk_fetch_uint16_le" "s29"} {"chunk_store_int16_le" "s08"} {"chunk_fetch_int16_le" "s98"} {"chunk_store_uint32_le" "s74"} {"chunk_fetch_uint32_le" "s01"} {"chunk_store_int32_le" "s17"} {"chunk_fetch_int32_le" "s59"} {"chunk_store_uint64_le" "s21"} {"chunk_fetch_uint64_le" "s99"} {"chunk_store_int64_le" "s58"} {"chunk_fetch_int64_le" "s80"} 'nil)) Where Let MAP (SEARCH.MAP STRING.compare Func {key _} key) Let die OS.die Where Let LIST Package "list" Let OS Package "os" Let SEARCH Package "search" Let STRING Package "string"