scheme相关内容

MIT Scheme Message Passing 抽象 Mailman 程序

我之前在这里问过一个关于消息传递抽象的问题:MIT Scheme 消息传递抽象 问题问我: 编写一个不接受任何参数并返回的邮递员对象工厂(make-mailman)响应以下消息的消息传递对象:'add-to-route: 返回一个接收任意数量邮箱对象的过程并将它们添加到邮递员对象的“路由"'collect-letters:返回一个接收任意数量字母的过程对象并收集它们以备将来分发'分发:将每 ..
发布时间:2021-11-26 17:33:47 其他开发

为什么是高阶程序?

因此,如果一种语言提供更高阶的过程,那么我可以拥有返回过程的过程.类似的东西: (define (Proc a b c)(lambda (x) ( #| 方法体在这里是 a b c 和 x |# ))) 要创建新程序,我会执行以下操作: (define ProcA (Proc a1 b1 c1)) ;将创建具有 1 个参数的 ProcA 通过定义采用 4 个而不是 3 个参数的 Proc ..

方案 - 可选参数和默认值

我目前正在研究 Scheme,按照我的理解,过程可以采用任意数量的参数. 我一直在尝试解决这个问题,但我很难理解这个概念. 例如,假设我想根据用户提供的信息写一条欢迎消息. 如果用户提供名字和姓氏,程序会喊出: 欢迎,!;;= "朱利叶斯", = "凯撒"欢迎,凯撒大帝! 否则,程序应该引用一个默认值,指定为: 欢迎,匿名者! 我的代码有以下大纲,但正在 ..
发布时间:2021-11-17 05:48:57 其他开发

如何定义可变参数函数

我正在寻找类似于 Javascript 的 arguments 数组的东西: function parent(){child.apply(this.arguments);} 我知道可变参数长度的点符号以及方案的 apply 函数. 这似乎不起作用,因为点被视为第一个参数: (定义(父级.)(列表 .))(父母 1 3 4 6 7)错误:错误的参数计数 - 收到 5 但预期为 1:# ..

方案 - 使用申请

我收到了以下练习作为家庭作业.我在上面坐了几个小时都没有成功,所以我别无选择,只能求助于您. 示例: (define m1 (cons "fixNumber" (lambda () 42)))(定义 m3 (cons "add" (lambda (x y) (+ x y))))(定义 myobj (create-obj (list m1 m2 m3)))(myobj "fixNumber" ..
发布时间:2021-11-16 23:21:38 其他开发

以下如何减少?

我有以下过程来添加三个数字: (定义 add-3 (lambda (x y z) (+ x y z)))(加 3 100 200 300);600 当将其转换为柯里化函数时,它会简化为如下所示, (申请 (lambda args1(应用 add-3 (cons 100 args1)))'(200 300));600 我的问题是上述情况如何进一步减少?例如,如果我在列表中替换 args1=( ..
发布时间:2021-11-16 23:18:20 其他开发

SICP/Scheme中的apply函数

我在这里问了几个关于 Scheme/SICP 的问题,而且答案经常涉及使用 apply 过程,我在 SICP 和本书的索引中都没有看到它只列出了一次,结果是一个脚注. 一些用法的例子基本上是这个问题的每一个答案:Going从 Curry-0, 1, 2, 到 ...n. 我对 apply 的工作原理很感兴趣,我想知道是否有一些示例可用.怎么可能把apply过程改写成另一个函数,比如像这 ..
发布时间:2021-11-16 23:16:10 其他开发

可以将宏应用于参数列表吗?

我的目标是能够将宏应用于参数列表,就像应用原始过程将过程应用于参数列表一样. 在应用宏的时候列表已经被评估了,没有办法解决这个问题,这很好;我想知道是否有任何方法可以以编程方式将列表“拼接"到宏应用程序中(与 unquote-splicing 具有相同的意义).难点在于不能将宏标识符作为参数传递. 一个用例是 (申请并列出) 相当于 (不是(memq #f 列表)) 查看列表中 ..
发布时间:2021-11-16 23:15:03 其他开发

或作为方案中的程序

我想将 or 应用于列表的每个元素,例如:(apply or '(#t #t #f)) 预期结果 #t,但出现错误: '#' 到 'apply' 的类型错误(kawa.lang.Macro)(预期:过程、序列或其他运算符) 据我所知,or 不是一个程序.有没有什么程序可以代替或? 解决方案 最简单的方法是使用 exists*.无论何时使用 (apply or some-list ..

方案中的矩阵乘法,列表列表

我开始学习Scheme,但有些不懂.我正在使用 DrRacket. 我写了以下代码: (定义mult_mat(λ (A B)(Trans_Mat (map (λ (x) (mul_Mat_vec A x))(Trans_Mat B)))))) 使用这个函数的: (定义 Trans_Mat(λ(A)(应用地图(缺点列表A)))) (定义mul_Mat_vec(λ (A v)(映射(λ( ..
发布时间:2021-11-16 23:00:43 其他开发

方案:如何产生 '(5 . (5))

我尝试了各种 cons 和 append 组合来生成 '(5 . (5)) 但我不能.有什么办法吗? 解决方案 冒着听起来像比尔克林顿的风险,这取决于你所说的“生产"是什么意思. 如果你的意思是“产生一个在屏幕上打印为 '(5 . (5)) 的值,那么你有点不走运,因为这个值打印为 '(5 5). 对于类似的示例:我如何生成数字 1e-1 ?好吧,试着输入它;这和 0.1 一样 ..
发布时间:2021-11-16 19:53:30 其他开发

如何使用Scheme附加到文件?

我正在使用 TinyScheme(实际上是 GIMP 中的 Script-Fu),但找不到打开文件并向其附加一行文本的好方法. 我正在尝试将一些信息记录到文件中以进行调试,但似乎没有实现转录... 现在我正在阅读整个文件(一次一个字符!),将其连接成一个字符串,将我的文本连接到它的末尾,然后再次将其全部写入文件. > 一定有更好的方法! 解决方案 它会是这样的 (打开文件 ..
发布时间:2021-11-16 19:47:42 其他开发

如何使用Scheme附加到文件?

我正在使用 TinyScheme(实际上是 GIMP 中的 Script-Fu),但找不到打开文件并向其附加一行文本的好方法. 我正在尝试将一些信息记录到文件中以进行调试,但似乎没有实现转录... 现在我正在阅读整个文件(一次一个字符!),将其连接成一个字符串,将我的文本连接到它的末尾,然后再次将其全部写入文件. > 一定有更好的方法! 解决方案 它会是这样的 (打开文件 ..
发布时间:2021-11-16 19:45:48 其他开发

Scheme/Racket:将单个元素附加到列表末尾的最惯用的方法

我想将元素 b 附加到列表 a(假设是 (a1, a2, ... an)),例如将数字 3 附加到 (1 2) 给出 (1 2 3) 到目前为止我一直在做(append a (list b)),有点冗长不雅,不知道有没有“更好"的方法... 解决方案 您是否正在逐项构建列表,一次一个项目?如果是这样,惯用的方法是向后构建列表,使用cons,然后反转最终结果: (define (ma ..
发布时间:2021-11-16 19:42:39 其他开发

将字符串附加到 IronScheme 中的现有文本文件

我们正在尝试使用 IronScheme 构建日志文件,并且我们已经使用球拍为其编写了代码.它在球拍中运行良好,但 IronScheme 会引发错误.这是我们目前所拥有的: (定义写入日志(拉姆达(什么要写)(带有输出到文件“robot-log.txt"(lambda () (printf (string-append whatToWrite "\r\n" ))) #:exists 'append ..
发布时间:2021-11-16 19:42:21 其他开发

附加!在计划?

我目前正在学习 R5RS Scheme(来自 PocketScheme)并且我发现我可以使用一个内置于 Scheme 的某些变体但不是全部变体中的函数:Append! 换句话说 - 破坏性地更改列表. 我对实际代码的兴趣并不像答案,而是了解人们可以将列表作为函数(或向量或字符串)传递然后对其进行变异的过程. 示例: (define (append!lst var)(缺点(lst ..
发布时间:2021-11-16 19:42:00 其他开发