相关疑难解决方法(0)

为什么eval邪恶呢?

我知道Lisp和Scheme程序员通常会说eval除非必要,否则应该避免.我已经看到了几种编程语言的相同建议,但我还没有看到一个反对使用的明确论据列表eval.我在哪里可以找到使用中潜在问题的说明eval

例如,我知道GOTO程序编程中的问题(使程序难以理解且难以维护,难以找到安全问题等),但我从未见过反对的论点eval.

有趣的GOTO是,相反的论点应该对延续有效,但我看到Schemers,例如,不会说延续是"邪恶的" - 你在使用时应该小心.他们更倾向于使用代码而eval不是代码使用continuation(据我所知 - 我可能是错的).

lisp scheme eval clojure common-lisp

141
推荐指数
8
解决办法
1万
查看次数

如何在Clojure宏中包装Exception?

我想包装由系统或用户抛出的异常(无关紧要)并强制它返回一些值.

我为它写了宏,但它不起作用.

宏:

(defmacro safe-fn
  [form]
  (try
    `(do ~form)
    (catch Throwable e
      1)))
Run Code Online (Sandbox Code Playgroud)

用法: (safe-fn (throw (RuntimeException. "Try me!")))

实际产量: RuntimeException Try me! clojure-brave-and-true.core/eval2219 (form-init6122238559239237921.clj:1)

期望的输出: 1

lisp macros functional-programming clojure

3
推荐指数
1
解决办法
194
查看次数