【问题标题】:lisp interpreter in pythonpython中的lisp解释器
【发布时间】:2011-09-14 08:17:44
【问题描述】:

我很好奇 Peter Norvig 的 Lisp 解释器的一部分是如何工作的。可以在这个 Lisp 解释器中定义函数……这是如何工作的?我是初学者,只想简单解释一下。

有一个部分可能与它所说的有关

elif x[0] == 'define':         # (define var exp)
        (_, var, exp) = x

http://norvig.com/lispy.html

【问题讨论】:

    标签: python shell scripting lisp interpreter


    【解决方案1】:

    在这种情况下,x[0]definex[1] 是变量名,x[2] 是表达式。因此,在 Python 中,_, var, exp = x 是一个“解构赋值”,它将数组 x 解构为其组成元素,并将它们分配给左侧的变量。

    【讨论】:

    • 定义函数是如何工作的?口译员如何理解(define (square x) (* x x))
    • @tekknolagi: (define (square x) (* x x))(define square (lambda (x) (* x x))) 的语法糖。这里很明显varsquareexp(lambda (x) (* x x))
    • 它如何将用户定义的函数保存在内存中,然后在用户调用(square 5)时使用它?
    • @tekknolagi: lambda 创建一个函数对象。在 Scheme 中(就像在 Python、JavaScript 等中一样),函数是一流的:您可以像传递其他对象一样传递它们。此外(与其他对象不同),您可以调用它们。
    • @tekknolagi:当然是传递给 Python lambda 的参数。 (阅读如何在 Python 中使用可变参数函数。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多