Typed Racket の car の型を (ALL (A B) (-> (Pairof A B)) A) だけに書き換えて使ってるんだけど、毎回これやるの面倒だしデフォルトでこれにして欲しいんだけど、まあそんな変更をいきなりすることもできないし、既存の動的型のコードにうまく型付けをするという考えにも沿わない感じするので仕方がない感じがする。
久しぶりに Racket で新しい lang の定義方法を調べて、car と cdr の型を書き換えた。
(そもそもなんで、そんなことをしているかというと、Typed Racket の car には (-> (Listof A) A) という型もついてて、これだと空リストに対して適用したときに型エラーにならないのでつらい問題がある。型を一個減らすだけで解決するやつなんでデフォでこっちにして欲しい。型を一個減らすだけで網羅性をチェックできるようになるというのに……)