もしくは自作言語作成第3ラウンド
というわけで
引数、戻り値の型は省略できる
再帰は大丈夫
let多相性は作れた?
引数、戻り値の型は省略できる
再帰は大丈夫
let多相性は作れた?
let abc = fn(a) { return a; } in (
abc(22); // ここで「引数intをとり、intを返す関数と保存してしまうと
abc("aa"); // ここで引数stringが渡されるのでエラーになる(本来ならばOKのはず)
)
このやり方だと
// 相互再帰
let abc = fn(a) {
if (a <10) {
def(a+1);
}
}
def = fn(b) {
if (b<10) {
abc(b+1);
}
}
in (
abc(0); // stack over flow!
)
呼び出すパターンを保存する?
型システム入門には以上のように書かれているが難しい…
くらいの認識で良いと思う(合ってるかは怪しい)
型システム入門に定義らしい定義が見つからなかった
完全性を保つのは難しいので、健全性だけ保つケースが多い
ex. モンキーテスト=> バグ発見 => テスト追加