scheme相关内容
为什么 (quote '"foo") 要通过 Scheme 解释器?根据 Scheme 中表达式的构造方式,它在语法上应该是多余的或错误的.quote 用于任何时候想要使用符号而 Scheme 不认为它是一个变量而字符串不是 有效符号 那么为什么 quote 运算符的缩写在前缀为字符串?奇怪的是 (quote '"foo") 返回 (quote "foo").冗余? 另一个奇怪的实验 (sy
..
我知道这个问题的基本算法,但我无法将句子更改为条件语句中的列表.我创建了 make-list 来让自己更容易,但我不确定把它放在代码中的什么地方.例如,在第一个 cond 语句中,在检查句子中的第一个元素是否为元音之前,我需要将句子作为一个列表.但我一直在做语法错误. 元音词?如果字符是不区分大小写的元音,则返回 #t,否则返回 #f. stenotype 接受一个句子并返回它并删除所
..
问题来了: 编写一个函数(first-n-elements lst n),它返回一个只包含lst的前n个元素的列表.例如,(first-n-elements '(1 2 3 4 5 6) 3) 应该返回 '(1 2 3).您的函数应该处理 n 大于列表长度的情况(在这种情况下它将返回整个列表),并且 n 为 0(应该返回'()). 我的回答是: (define (first-n-el
..
我想制作一个函数,该函数会出现一个元素在列表中出现的次数.例如在列表中: '(a b c b b c c a) 我希望它返回一个嵌套列表:'((a 2) (b 3) (c 3)) 我知道这个函数看起来像这样: (定义collect-similar(拉姆达(榆树ls)(条件[(空?ls)'()][(等于?榆树(车ls))] 我知道我需要继续检查列表,直到它返回空列表的基本情况,我可以使用
..
给定 #;>(缺点 (缺点 1 2) 3)((1 . 2) . 3) 当我们尝试 #;>(缺点 3(缺点 1 2))(3 1 . 2) 什么控制了 . 的使用位置?这些结构的记忆表示是什么? 解决方案 方案实现通常以列表形式打印看起来像列表的东西: ->(缺点 1 (缺点 2 '()))'(1 2) 在您的示例中,如果不是最后一个 2,(cons 3 (cons 1 2)) 将
..
我的上一个问题的续集: 我正在使用 ANSYS Fluent 程序进行 CFD 模拟.这个程序允许使用所谓的日志文件对模拟设置进行一些部分自动化,我才知道这个日志文件是用 Scheme 编写的.不幸的是,我什至从未听说过 Scheme,我只知道它是一种 Lisp 方言(我也对此一无所知). 我正在尝试通过使用循环自动为我的模拟设置一堆参数来自动化一些无聊的任务.如果我从 Fluent
..
我想请你帮忙完成下面的代码,条件是测试列表 ws 和 vs 是否不相等.如果它们不相等,则返回文本 false(#f) 否则处理下面的代码.我盯着满足变量 len1 和 len2 来计算两个列表的长度.当我运行它时,我收到此错误:lambda: no expression after a sequence of internal definition in: lambda 我做错了什么? (de
..
我有一种情况,我想做类似... (define (def a b)(存储 a b);将“a"的定义存储在某处(define-global a b)) ;还定义 'a' 以便它的定义;稍后可在程序中访问 这有可能吗?据我所知 define-global 不存在,所以过程中的 define 语句只适用于本地环境. 这旨在为方案中的嵌入式 DSL 创建“def"过程,因此除了进行定义之外,我还
..
我正在按列表的第一个元素对列表进行排序,例如 (排序 (列表 '(2 1 6 7) '(4 3 1 2 4 5) '(1 1)))) 预期输出 => ('(1 1) '(2 1 6 7) '(4 3 1 2 4 5)) 我使用的算法是冒泡排序.我修改了它来处理列表.但是,代码无法编译.错误是 mcar:合同违约预期:mpair?给定:4 谁能更正我的代码并解释一下.谢谢 (定义
..
这是作业,所以我不想要答案.我只需要朝着正确的方向推动.我需要将多个函数映射到一个列表上.例如: (map-multi (list plus-1 square) '(4 5 6)) =>(25 36 49) 我能够将第一个函数映射到列表的元素,但是,在那之后我很迷茫.另外,由于这是介绍性的,我仅限于介绍性函数(const、append、car、cdr、member 等) (define (m
..
如何编写一个排序算法,以递增顺序返回列表. 例如:'(1 3 5 2 9) 返回 '(1 2 3 5 9) 解决方案 大多数 Scheme 实现都带有对列表进行排序的过程.如果您的实现没有提供一个,那么在您身上滚动一个并不困难.这是快速排序算法的实现: >(定义(qsort e)(if (or (null? e) (
..
我正在尝试将一些 Python 代码转换为方案. def test(x):如果 x >1:做一点事如果 x >10:返回如果 x == 4:做一点事测试(11) 我没有在方案中找到“回报".当 x > 10 时,我想退出测试功能.如何模拟方案中的“回报"?(我正在使用诡计)谢谢 解决方案 在 Scheme 中没有明确的 return 关键字 - 它比这简单得多,最后一个表达式的值表达式
..
我的目标是能够将宏应用于参数列表,就像 apply 原始过程将过程应用于参数列表一样. 在应用宏的时候列表已经被评估了,没有办法解决这个问题,这很好;我想知道是否有任何方法可以以编程方式将列表“拼接"到宏应用程序中(与 unquote-splicing 具有相同的意义).难点在于不能将宏标识符作为参数传递. 一个用例是 (申请并列出) 相当于 (不是(memq #f 列表))
..
我在记事本上写了这个 Scheme 源文件.我安装了开局计划. (定义hello-world(拉姆达()(开始(写“你好世界")(新队)(你好,世界)))) 我使用 Windows 命令行.我在命令行中输入“gsc hello.scm".它在我的桌面上吐出一个名为“hello.o2"的文件.我想在我的命令行上看到“Hello-World"弹出.例如,当我用 C++ 编译东西时,它给了我一个名为
..
有问题 在应用程序中使用 AND方案 ,我提出了一个解决方案,将“和"应用到 PLT-Scheme 372 中的原子列表(即 s-exp,它既不是空的,也不是对的.). 欢迎使用 DrScheme,版本 372 [3m].语言:文本(MzScheme,包括 R5RS).>(eval (cons 'and (list ''#f ''#f ''#t)))#F>(eval (cons 'and (li
..
,我正在Scheme 中做我的作业.我正在使用 Scheme MIT Interpreter 和 https://repl.it/languages/scheme 来测试我的代码. 第一个问题是 ;- 在?过程需要一个元素“el"和一个列表“lst".;- 它返回一个布尔值.;- 当 el 在 lst 时返回真,否则返回假.;- 例子:;(in?3’(2 5 3));评估为#t;(在?
..
我正在阅读The Little Schemer.多亏了我蹩脚的英语,这一段让我很困惑: (cond ... ) 还具有不考虑其所有论据.然而,由于这个性质,(和 ... )或(或 ... ) 可以定义为 (cond ... ) 方面的函数,尽管(和...)和(或...)都可以表示为的缩写(cond ... )-表达式: (and a b) = (cond (a b) (else #f)和(
..
我是 Scheme 的新手,这是我的第一个函数式语言.递归地实现几乎所有东西对我来说似乎很尴尬.尽管如此,还是能够实现具有单个整数输入的阶乘和斐波那契问题的函数. 然而,当你的函数有一个列表输入时呢?假设这个练习: 功能:ret10 - 提取所有大于 10 的数字并将其作为列表返回在给定列表中找到的,guile> (ret10 ‘(x e (h n) 1 23 12 o))输出:(23
..
给定一个函数,例如斐波那契递归的树递归实现,我如何显示对诸如 (fib 5) 之类的表达式求值的每个步骤? (定义(fib n)(条件((= n 0)0)((= n 1) 1)(否则 (+ (fib (- n 1)(fib (- n 2))))))) 比如我想输出: (fib 5)(+ (fib 4) (fib 3))(+ (+ (fib 3) (fib 2)) (+ (fib 2) (fi
..
以下方案代码 (let ((x 1))(定义(f y)(+ x y))(设置!x 2)(f 3) ) 计算结果为 5 而不是 4.考虑到 Scheme 促进静态作用域,这令人惊讶.允许后续突变影响闭包中封闭环境中的绑定似乎恢复到有点动态范围.允许的任何具体原因? 编辑: 我意识到上面的代码不太明显可以揭示我所关心的问题.我在下面放了另一个代码片段: (定义 x 1)(定义(f y
..