You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Common Lisp代码(values (values 1 2 3) 4 5)的疑问

Common Lisp中(values (values 1 2 3) 4 5)返回1 4 5的原因

这得从Common Lisp处理函数参数的规则说起:

  • 当把一个能返回多个值的表达式作为函数参数传递时,只会保留该表达式的第一个返回值,其余返回值会被直接丢弃。
  • values函数的作用是返回多个值,但它接收的每个参数都只能是单个值——因为参数传递阶段已经把多值表达式的多余值丢掉了。

回到你的代码:
外层values的第一个参数是(values 1 2 3),这个表达式本身能返回1、2、3三个值,但作为参数传给外层values时,只有第一个值1被保留,2和3直接被丢弃。之后外层values把这个1和后面的4、5一起返回,最终输出就是1 4 5。

内容的提问来源于stack exchange,提问作者Filipmk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:05:53