lexical-scope

    7热度

    3回答

    我是lisp的新手,并且正在编写几个简单程序以便更熟悉它。我正在做的事情之一是编写一个阶乘方法的递归和迭代版本。但是,我遇到了一个问题,似乎无法解决它。 我看到类似的错误 Lisp: CHAR is neither declared nor bound 但实际上没有达到解决方案,除了OP意识到他犯了一个“输入错误”。在REPL中,我可以使用setf函数,它工作正常。我也用emacs来使用LispB

    18热度

    2回答

    Emacs 24现在具有词汇范围变量。当然,它也有动态范围的变量。既然它有两个,我很困惑什么时候变量会具有哪种范围。有一个lexical-binding变量控制何时启用词法绑定,我想我读了一些关于defvar的内容,现在声明了一个动态范围的变量,但总的来说我很迷茫。 Emacs 24的新的范围规则有什么好的解释吗?换句话说,当我查看为Emacs 24编写的Emacs Lisp代码中的变量时,我该如

    1热度

    3回答

    我是Ruby的新手。我正处于尝试用Ruby编写东西的成功阶段,就像我用其他语言写的那样。 我想添加一个方法到一个对象 - 一个不起眼的数组,让我们说。不是所有的数组,只针对一个特定的数组。此方法必须有权访问外部作用域中的变量。 我的理解是,我可以使用def向对象添加方法,但该方法无法访问外部作用域中的变量。为此,我需要使用lambda或Proc.new,但我无法看到如何将“lambda/proc”

    2热度

    3回答

    考虑下面的代码: function processParagraph(paragraph) { if (paragraph.charAt(0) === '%') { for (var level = 0; paragraph.charAt(level) === '%'; level++) {} return { type: 'h' + level,

    2热度

    2回答

    我曾经写过类似let的表达式 - 带有词法范围。 所以,我写我自己的(伤感,但它将失败,多线程): # Useful thing for replacing a value of # variable only for one block of code. # Maybe such thing already exist, I just not found it. def with(dict

    7热度

    5回答

    几年前,我开始为一个包含程序员定义的函数的域特定语言编写一个解释器。 首先我使用一个简单的符号表堆栈来实现变量作用域。但是现在我想转向适当的词汇范围界定(可以选择关闭)。任何人都可以解释或指出我对词法作用域背后的数据结构和算法的一个很好的解释吗?

    6热度

    4回答

    有时我需要一个有用的实用功能,比如List::Util::max在大型程序的中间,它可以处理大量内容。所以,如果我做 use List::Util 'max'; 在我的程序的顶部,我坚持与该符号,污染了我的整个命名空间,即使我只需要它一个子程序。 所以我一直想尝试不同的图案,而不是: use List::Util(); # a whole bunch of stuff later...

    6热度

    2回答

    在口齿不清我可以绑定在这样的封闭束缚自由变量... (let ((x 1) (y 2) (z 3)) (defun free-variables() (+ x y z))) (free-variables) 结果... 6 我想知道的是,如果它能够检查绑定动态关闭变量? E.g. (inspect-closure free-variables) 导致类似... ((x 1

    0热度

    1回答

    我试图理解词汇范围。在词法作用域,我有这样的代码,C等的语法: main{ f1(){ int y = 8; } int y = 1; //* f1(); } f1()线的执行后,将在主(I放*下的话)保持为1或更改为8 y变量的值?

    10热度

    1回答

    Perl中的局部变量分配的内存位置在数组中存在多长时间(对于数组,哈希和标量)?例如: sub routine { my $foo = "bar"; return \$foo; } 函数返回后仍然可以访问内存中的字符串"bar"吗?它会活多久,它是否类似于C中的静态变量,或者更类似于堆中声明的变量? 基本上,这在这种情况下是否有意义? $ref = routine()