古い Java/Python の頭を clojure のようにひねっています。clojureの遅延機能を理解するのを手伝ってください。
=> (def myvar (lazy-seq [1 2 (prn "abc")]))
#'user/myvar
以上が分かりやすいです。これは遅延シーケンスであるため、 (prn "abc") は評価されず、何も出力されません。
=> (def myvar (lazy-seq [1 2 (prn undefined-var)]))
CompilerException java.lang.RuntimeException: Unable to resolve symbol: undefined-var in this context, compiling:(NO_SOURCE_PATH:1)
ご覧のとおり、上記はエラーを発生させます。なんで ?
私の(間違った)理解は、怠惰なので、「undefined-var」がまだ定義されていなくても、(prn undefined-var)が合法的にここにある可能性があるということです。
誰でも私の理解を正しい方法に向けてください。