ファイルを読み取ることができるClojureマクロを作成したい場合、ファイルが正常に読み込まれたときにストリームをクローズする必要があります。このように呼び出されファイルを読み取るClojureマクロ
(import '(java.io FileReader File))
(defmacro read([x y]
`(let ~x
(try ~y
(. x close)
(catch Exception e# e#)))))
、
(read [stream (java.io.FileReader (java.io.File "somefile.txt"))] (. stream read)))
このエラーで結果
java.lang.Exception: No such var: user/x (NO_SOURCE_FILE:8)
誰もが何か提案を持っています、ありがとう。
入手したエラーメッセージに関する詳細情報はありますか?それはランタイムエラーまたはコンパイル時間ですか? –
@PieterBreed java.lang.Exception:いいえそのような変数:ユーザー/ x(NO_SOURCE_FILE:8) – Silversnail
マクロの4行目で、 "x"は引用符で囲まれていません。 –