動的型の言語でも以下のようなプログラムの問題を検出できます
Matzにっき(2008-02-19)にあったプログラムくらいなら、一応glintでも問題を検出できます。
(define (test a b) (print (+ a b))) (define (main args) (if (< 3 (length args)) (test 1 test) (test 1 2)) 0)
% glint hidden_dangers.scm hidden_dangers.scm:2: error: #can't be applied with arguments (1 # )
エラー箇所がちょっと分かりにくいのが難点。
もちろん、以下のようなobject-+の定義を追加してあげればエラーは消えます(ただし、交換則が成立しないので、実際に使うのはさけた方がいいですけど)。
(define-method object-+ ((a <integer>) (b <procedure>)) a)