高階関数
今作っているインタプリタで高階関数が使えるようになりました。
高階関数って、LISP、Scheme、Haskellなど、関数型言語固有の文法です。関数を返す関数です(関数ポインタを返す関数ではありません)。
具体的には以下のプログラムを実行することができるようになりました。
-- 整数を radix 進数の文字列にします。 -- 例: toString(10)(5) -> "5" -- 例: toString(10)(-99) -> "-99" -- 例: toString(16)(255) -> "FF" -- 例: toString(16)(-255) -> "-FF" -- 例: toString(2)(10) -> "1010" public toString: int -> int -> seq of char toString(radix)(x) == if x < 0 then "-" ^ toString(radix)(abs x) elseif x < radix then ["0123456789abcdefghijklmnopqrstuvwxyz"(x+1)] else toString(radix)(x div radix) ^ toString(radix)(x mod radix) pre 2 <= radix and radix <= 10+26;