gpt4 book ai didi

Common-Lisp:绑定(bind)形式参数,到底传递了什么?

转载 作者:行者123 更新时间:2023-12-04 23:17:11 25 4
gpt4 key购买 nike

假设我们有一个符号,有一个符号值、一个函数值和一个属性列表,我们称它为 q .假设我们有一个函数 f带形参v ,例如(f (v) ... )并调用像 (f q) 这样的函数.

我的问题是:到底传递给 v 的是什么? ?是

  • q 的值;
  • q 的函数值;
  • q的房产列表,

  • 传递给形参 v ?

    如果都传给 v ,那么我对我们真的需要函数 funcall这一事实感到困惑。和 apply .如果 v真的会同时拥有值和函数值,那么当我们写 (v 3) 时,它肯定可以自己决定,那么它必须使用 v的函数值而不是 (funcall v 3) .当我们使用 (setq v 3)那么它必须使用 v 的值.

    究竟传递给 v 的内容是什么?为什么 v不是一个符号,而只是一个“参数”或“变量”,对我来说是个谜。但我相信它在 Lisp 1.5 中确实是一个象征。但在普通的 Lisp 中,似乎有一些
    困惑的余地。

    最佳答案

    如果你有

    (f q)

    表示调用函数 f值为 q .
  • Lisp 看到 f是一个函数,所以整个 (f q)是一种函数形式。
  • Lisp 计算 q到它的值(value)。
  • Lisp 调用 f有一个值。
  • Lisp 绑定(bind)局部变量 v到传递的值
  • Lisp 执行函数体 f...
  • v在源代码中是一个符号,但它表示一个变量。在编译的代码中,符号消失了。由于 Common Lisp 使用词法绑定(bind),变量现在是词法引用。

    关于Common-Lisp:绑定(bind)形式参数,到底传递了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37224597/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com