16得票4回答
如何在Python中创建动态作用域变量?

我正在将一些Lisp代码翻译成Python。 在Lisp中,您可以使用let结构并将引入的变量声明为特殊的,从而具有动态作用域。 (参见http://en.wikipedia.org/wiki/Dynamic_scope#Dynamic_scoping) 在Python中如何实现类似功能呢...

7得票2回答
为什么Perl 6核心设置中暂存功能无法正常工作?

我在查看内容时,在indir实现中看到了这个评论: sub indir(Str() $path, $what, :$test = <r w>) { my $newCWD := $*CWD.chdir($path,:$test); $newCWD // $newCW...

11得票1回答
基于SICP的求值环境模型,词法作用域和动态作用域的区别

在SICP的3.2.2节中,执行以下代码片段:(define (square x) (* x x)) (define (sum-of-squares x y) (+ (square x) (square y))) (define (f a) (sum-of-squares (+ a...

11得票4回答
如何解决emacs lisp闭包中的局部变量不足问题

我现在正在学习Emacs Lisp,参考手册是reference manual,同时也在从一本LISP书中学习Common Lisp。 来自Common Lisp书籍。 >> (setf power-of-two (let ((previous-power-of-tw...

18得票2回答
Emacs 24中变量作用域的新规则是什么?

Emacs 24现在拥有词法作用域的变量,当然它还有动态作用域的变量。既然现在两者都有了,我对于什么时候一个变量将具有哪种类型的作用域感到很困惑。存在一个名为lexical-binding的变量来控制何时启用词法绑定,我想我读过一些关于defvar现在声明动态作用域变量的内容,但总体上我感到相...

10得票1回答
循环宏中的Common Lisp绑定

我想在循环中重新绑定一个特殊变量。通常情况下,可以使用 let 来实现这一点。(let ((*read-eval* nil)) (do-something-here)) 但由于loop宏拥有这些不错的with子句,我认为我可能可以在其中实现。表达式(macroexpand '(loop w...

8得票2回答
Clojure动态绑定

我知道以下做法有很多问题。同时,鉴于我的stackoverflow声望只有23分,人们可能会认为我是一个正在学习编程的新手。但是,请容忍我,并且关注“我们如何做到这一点”,而不是“为什么要这样做/你不应该这样做”的方面。 我想要的是: (def dog (Dog. ...)) (def c...

28得票7回答
能否在JavaScript中实现动态作用域而不使用eval?

JavaScript 的词法作用域意味着从函数内部访问的非局部变量会在该函数定义时解析为父级作用域中存在的变量。这与动态作用域形成对比,其中从函数内部访问的非局部变量会在调用函数的作用域中解析为存在的变量。 x=1 function g () { echo $x ; x=2 ; } func...

28得票1回答
Clojure和^:dynamic

我尝试理解动态变量和绑定函数,因此我尝试了这个(Clojure 1.3):user=> (defn f [] (def ^:dynamic x 5) (defn g [] (println x)) (defn h [...

9得票2回答
Clojure的动态变量和绑定有什么实际用途?

我看了一下参考资料:http://clojure.org/vars#Vars%20and%20the%20Global%20Environment,http://clojuredocs.org/clojure_core/clojure.core/binding,以及clojure and ^:...