=> (merge-with + {:a 1 :b 2} {:a nil :b 2}) NullPointerException clojure.lang.Numbers.ops (Numbers.java:961) これは2つ目のマップの:aの値がnilなため,(+ 1 nil)を実行しようとして失敗してヌルポを起こしています.現在のClojureの問題点として,エラーメッセージがソースコードと対応しておらず意味不明であるという点があるために,このような単純なバグでも発見するのに苦労しました.このバグをcore.typedにより退治していきたいと思います. 最初の型チェック core.typedの中には,cfという式の型をチェックする関数が存在します.(cfはcheck-formの略語のようです)これでmerge-with +の型をチェックしてみましょう.簡単化のため,引数のマップは2つ