動的型の言語でも以下のようなプログラムの問題を検出できます

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)