はじめに 自作のISLisp処理系のEasy-ISLisp(EISL)のコンパイラにつき、型推論器を組み込んでテストをしています。ver0.85より実験的に導入しました。 動作例 現在のところコンパイラ起動の際に第2引数にtypeというシンボルを与えた場合に型推論を行うようにしています。 例1 この例、関数fooではlengthに数が与えられてしまいますから、実行時にエラーになります。これを型推論でチェックしてワーニングメッセージを出しています。コンパイルは可能なのでコードは生成されます。 (defun foo (x) (length (+ x 1))) > (compile-file "tarai.lsp" 'type) initialize pass1 inferencing FOO ("subr type mismatch" ((LENGTH (+ X 1)))) pass2 com
![ISLispにおける型推論コンパイラ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/04bfa7a44ac88a78cf5b99b7cfca2e7faaf40d5b/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9SVNMaXNwJUUzJTgxJUFCJUUzJTgxJThBJUUzJTgxJTkxJUUzJTgyJThCJUU1JTlFJThCJUU2JThFJUE4JUU4JUFCJTk2JUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgzJTkxJUUzJTgyJUE0JUUzJTgzJUE5JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz1kNWQ5NDE3ZDhjYTM1MjNkMjljNmUzMWJiZmQ0M2RiMg%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzeW1fbnVtJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xYTA3ZGQ5MGZmYjY5MDVjYzBiN2EyZGVmMjVkMTE1MQ%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4gZnVrdW9rYS5leO-8muemj-WyoUVsaXhpcuOCs-ODn-ODpQ%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%2523212121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3D746c772895a15d05087eae13c6247414)