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

Scheme中(map (p q) (list 1 2 3))运行输出与预期不符疑问

代码逻辑解析

首先拆解两个函数的定义:

  • (define p (lambda (x) (lambda (y) (x (x y))))):p是高阶函数,接收函数参数x后,返回一个新的匿名函数。这个匿名函数接收参数y时,会连续两次调用x,执行逻辑等价于 x(x(y))。
  • (define q (lambda (x) (* x x))):q是基础的平方计算函数,输入数值返回它的平方值。

为什么输出是(1 16 81)?

(p q)就是把q作为参数传入p,得到的新函数逻辑为:对输入值连续执行两次q运算,也就是平方后再平方,等价于计算输入值的四次方:

运算推导:q(y) = y²,q(q(y)) = (y²)² = y⁴

map (p q) (list 1 2 3) 就是对列表中的每个元素分别计算四次方:

  • 1的四次方 = 1
  • 2的四次方 = 16
  • 3的四次方 = 81

你预期的(1 4 9)是直接调用(map q (list 1 2 3))的结果,也就是仅对每个元素做一次平方运算的输出,和(p q)的两次平方叠加逻辑不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:00