組込みライブラリのシグネチャ
でも、組込みライブラリなんだし、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がねーや。と追記。