了解Scheme函数

2024-03-10

我们的编程语言练习考试中给出了以下问题,我很难理解它是如何工作的。有人能告诉我代码流程是什么吗?我已经在球拍中运行过它并且知道答案是什么。看起来第一个 lambda 函数将其他两个函数作为参数。但输入在哪里(lambda (x) 2) and (lambda (y) 3)传给?

(((lambda (x y) (x y)) (lambda (y) (lambda (y x) (x (x y)))) (lambda (x) (lambda (x y) (x (y x))))) (lambda (x) 2) (lambda (y) 3))

问题答案是3。


我们人类喜欢给事物命名。带有短名称的简洁符号使得在心理上操作代码变得很容易,因为我们的大部分心理能力都与我们的大规模并行视觉识别系统紧密相关:

(((lambda (x y) (x y))
  (lambda (y) (lambda (y x) (x (x y))))
  (lambda (x) (lambda (x y) (x (y x)))))
 (lambda (x) 2)
 (lambda (y) 3)) =>

((u               where u = (lambda (x y) (x y))
  f                     f = (lambda (y) (lambda (y x) (x (x y))))
  g)                    g = (lambda (x) (lambda (x y) (x (y x))))
 (lambda (x) 2)
 (lambda (y) 3)) =>

((u               where (u x y) = (x y)
  f                     (f y)   = \(y x) -> (x (x y))     ; (*)
  g)                    (g x)   = \(x y) -> (x (y x))
 (lambda (x) 2)
 (lambda (y) 3)) =>

((f               where (f g)   = \(y x) -> (x (x y))
  g)                    (g x)   = \(x y) -> (x (y x))
 (lambda (x) 2)
 (lambda (y) 3)) =>

(h                where h       = \(y x) -> (x (x y))
 p                      p       = \(x) -> 2
 q) =>                  q       = \(y) -> 3

(h                where (h y x) = (x (x y))
 p                      (p x)   = 2
 q) =>                  (q y)   = 3

(q (q p))         where (p x)   = 2
                        (q y)   = 3
    => 

(q 3)             where (q y)   = 3
    => 

3

The (*)定义包含所有变量bound在 lambda 表达式中(lambda (y x) (x (x y)))- 两个都x and y。论点y in (f y)是这样ignored。它会被引用free多变的y在 lambda 表达式中,但没有。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解Scheme函数 的相关文章

随机推荐

  • 检查内容是否溢出

    我需要知道我的内容何时溢出我的 div 如果是这样 我将放置一个链接 以便在新窗口中打开包含所有内容的页面 Cheers DalexL 使用 jQuery 和文本溢出时的选取框文本 https stackoverflow com quest
  • 如何控制RDD分区的首选位置?

    有没有办法手动设置RDD分区的首选位置 我想确保在特定机器上计算特定分区 我使用数组和 Parallelize 方法从中创建 RDD 另外我没有使用 HDFS 文件位于本地磁盘上 这就是为什么我要修改执行节点 有没有办法手动设置RDD分区的
  • 为 Monotouch 对话框元素设置自定义字体

    有没有办法在实例化 Monotouch Dialog 类时设置字体 Section This is the header 这将使用带阴影的默认蓝色文本进行渲染 但我找不到设置该字体的位置 有没有办法覆盖它使用的字体和颜色 我为那些希望替换整
  • 如何复制范围并仅将包含值的行粘贴到另一个工作表中?

    首先我要说的是 我意识到简单的解决方案是过滤列 取消选中空白 将值复制并粘贴到新列中 问题在于 对于不 精通技术 的教师来说 没有什么是简单的 话虽如此 我正在将同一个谷歌电子表格中的多个工作表中的数据提取到 主 工作表中 我有一个名为 可
  • Autotools 库和目标文件输出控制

    我的目标是将所有目标文件构建在 objs 目录中而不是 Makefile 的根目录中 并将二进制文件 和库 复制到项目的bin 目录 但我一直无法找到任何资源来解释如何做到这一点 我该怎么做呢 这是我的configure ac和src Ma
  • Java JCE 无限强度加密安全策略文件

    JRE 更新后 JCE 策略文件 位于 java home lib security 中 是否会被标准强度策略文件覆盖 或者这些在 JRE 更新中是否保留 编辑 有谁知道 Mac OS X JRE 是否附带无限的策略文件 Thanks Jo
  • 如何在 React Native 中测量我的应用程序的数据使用情况?

    我有一个反应本机应用程序 我想测量每个用户的数据使用情况并收集它们以供以后优化 我看到原生 android 的旧问题表明 trafficStats 可能会通过 UUID 提供统计信息 React Native 有哪些可能性 使用react
  • 使用 applicationwillenterforeground 显示密码屏幕

    在 iOS4 之前 我的应用程序的初始视图控制器将检查 viewWillAppear 中的密码开 关设置变量 如果设置为打开 则显示一个模式密码屏幕 该屏幕将一直保留在那里 直到输入正确的密码或按下主页按钮 对于 iOS4 如果我的应用程序
  • 带参数的 DataTables ajax.reload()

    我正在使用数据表服务器端在 Angular2 项目中 我尝试在进行更改后重新加载表 并且我想通过 AJAX 将这些更改作为 POST 中的参数传递 问题是 DataTables 总是得到options来自初始化的对象 而不是更新版本新参数
  • 是否可以选择使用 Flash 10.2 光标,同时仍与 Flash 10.0 兼容?

    我有一个 Flash 应用程序需要 Flash 版本 10 0 才能运行 我想添加 Flash 10 2 中引入的本机鼠标光标 但我不想要求所有用户都升级 并且我不想编译我的应用程序的两个单独版本 有什么方法可以在运行时检测光标是否可用 然
  • 在 Flutter 中将字符串解析为小部件

    我想将以下字符串解析为其等效的 Flutter 小部件 String fetchedFromServer Container child Text Hello 我想从网络服务器接收布局并将它们解析为真正的小部件 我怎样才能在 Dart Fl
  • 如何根据用户区域设置设置数字和日期的格式?

    我需要一种根据用户的区域设置自动格式化日期和数字对象的方法 到目前为止 我一直在使用toLocaleString 日期函数 对于数字来说 toLocaleString 也是可用的 但是正如您在jsFiddle http jsfiddle n
  • SqlAlchemy:如果对象尚不存在,则创建对象?

    我是 SQLAlchemy 的新手 我目前有 ev model EnumerationValue key key level 2 code level 2 ev keyvalues key parent level 1 model Sess
  • 简单的Java计算器(需要小数帮助)[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 好的 这是我的简单 java 计算器 一切正常 我只需要允许小数的帮助 非常感谢帮助我的人 这是一个学校项目 所以我需要很快得到答案 imp
  • 安装旧版本的 Mono

    今天我的 Ubuntu 将 Mono 更新到了 4 2 1 102 它不会允许我绝对需要运行的某个程序 如何将其降级到 4 0 5 1 我努力了 sudo apt get install mono complete 4 0 5 1 那是行不
  • alt 属性可以用于输入类型按钮吗

    我想询问输入标签中的 alt 属性 正如我在许多网站上发现的那样 当我们输入图像类型时 会使用 alt 属性 1 可以用于输入型按钮吗
  • 如何使用最新版本的 R RDCOMClient 从 Outlook 发送邮件?

    当我使用最新版本的 R RDCOMClient 包发送 Outlook 电子邮件时 它显示错误 相同的代码 library RDCOMClient init com api OutApp lt COMCreate Outlook Appli
  • 通过spring AOP + Aspectj进行异常处理

    在我的项目中 我有一个域层 它基本上是 POJO 和一个位于域层之上的 Spring 控制器 服务层 我还有一个位于服务和域之间的 AOP 层 我的域层正在抛出业务异常 这些异常现在正在服务层中处理 但是我想更改它 以便从领域层抛出的异常将
  • Backbone.js 视图的合适粒度是多少?

    我正在采用 Backbone js 来渲染一个小角落现有的大型网络应用程序 http www esvonline org 如果进展顺利 我可以看到 Backbone js 不断发展以涵盖整个应用程序 为有机增长的应用程序提供一些急需的结构
  • 了解Scheme函数

    我们的编程语言练习考试中给出了以下问题 我很难理解它是如何工作的 有人能告诉我代码流程是什么吗 我已经在球拍中运行过它并且知道答案是什么 看起来第一个 lambda 函数将其他两个函数作为参数 但输入在哪里 lambda x 2 and l