組込みライブラリのシグネチャ
でも、組込みライブラリなんだし、trubyに組み込んでしまっても良いのかもと思ったり。ひとまず、型定義をOCamlのコードで書くのはだるいので、適当にパーザとか書いてみることにしようかな、と。
module Kernel : { puts: Object -> NilClass gets: () -> String } Object : { to_s : () -> String nil? : () -> Boolean } String : { + : String -> String to_i : () -> Integer } Integer : { + : Integer -> Integer - : Integer -> Integer * : Integer -> Integer / : Integer -> Integer } Boolean : { & : Boolean -> Boolean | : Boolean -> Boolean } NilClass : { & : Boolean -> Boolean | : Boolean -> Boolean }
こんなんどうでしょう。core.rbiとかのファイルに保存する感じで。IntegerとかBooleanとかRubyのクラス構造と一致しないのが気持ち悪いけど、まああとで考えよう。
※あ、NilClassがねーや。と追記。