我明天考试,这是一个错误的作业问题.我已经坚持了一段时间,有人可以告诉我解决方案是什么?
问题是,你如何修复这段代码:
(define (buggy-sum lst)
(+ (car lst) (buggy-sum (cdr lst))))
(buggy-sum (list 1 2 3 4))
Run Code Online (Sandbox Code Playgroud)
我的解决方案如下,但这是错误的:
(define (buggy-sum lst)
(cond [(null? lst) '()]
[else (+ (car lst) (buggy-sum (cdr lst)))]))
(buggy-sum (list 1 2 3 4))
Run Code Online (Sandbox Code Playgroud)
有人能告诉我正确的解决方案是什么吗?
我是scheme的新手,我正在尝试创建嵌套循环,其中C代码将如下所示: -
for(i = -1, a = 0; i > -5, a < 5; i--, a++)
{
for(j = i, b = 0; j < (abs(i)), b < 5; j++, b++)
{
<do something>
}
}
Run Code Online (Sandbox Code Playgroud)
我在计划中用这个概念尝试过类似的东西: -
(let oloop( (i -1) (a 0))
(display i)(display a) (newline)
(if (and (> i -5) (< a 5)) (oloop((- i 1) (+ a 1))))))
Run Code Online (Sandbox Code Playgroud)
我无法嵌套所有四个循环加上面的代码不起作用.
请建议.
我试图了解caddar在计划中是什么.我的笔记说它是汽车或cdr的嵌套版本,但它没有解释它是什么组合.这是一个代码及其输出:
=>caddar '((a b c) '(d e f)))
;Value: c
Run Code Online (Sandbox Code Playgroud)
有人可以在这里解释为什么输出是c?
谢谢
我有以下代码:
(define (play-loop strat0 strat1 strat2 game-limit)
(define (play-loop-iter strat0 strat1 strat2 count history0 history1 history2 limit)
(cond ((= count limit) (print-out-results history0 history1 history2 limit))
(else (let ((result0 (strat0 history0 history1 history2))
(result1 (strat1 history0 history1 history2)
(result2 (strat2 history0 history1 history2)))
(play-loop-iter strat0 strat1 strat2 (+ 1 count)
(extend-history result0 history0)
(extend-history result1 history1)
(extend-history result2 history2)
limit)))))
(play-loop-iter strat0 strat1 strat2 0 '() '() '() game-limit)))
Run Code Online (Sandbox Code Playgroud)
当我在球拍中运行时,它给出了以下错误:
开始(可能是隐含的):在一系列内部定义之后没有表达式:...
我似乎一切都好,但有一个错误,看起来很有趣.
问题是什么?
谢谢...
我想知道是否有人可以解释这个lambda表达式以及如何导出输出.我把它放进口译员并且正在接受((2) 2).我只是不确定为什么它给了我而不仅仅是(2 2).
((lambda x (cons x x)) 2)
Run Code Online (Sandbox Code Playgroud) 所以我正在为我的编程语言类做一些练习问题,其中一个任务是创建一个脚本"MyEval",它允许你做简单的嵌套加法和乘法.因此,例如程序将能够执行此操作(MyEval '(1 +(3 *4)))或更深入,但无需进行减法或超过2个数字和运算符.所以不那么复杂.然而,我的思绪是炒的,我会喜欢一些指导.这就是我到目前为止所拥有的
#lang racket
(define ns (make-base-namespace))
(define (MyEval lis)
(cond
[(and ; neither is a list and can be evaluated
(not(list? (car lis)))
(not(list? (caddr lis)))
)
(eval (cons (cadr lis) (list (car lis) (caddr lis)) ) ns)]
[(list? (car lis))
(MyEval (car lis))]
[(list? (caddr lis))
(MyEval (caddr lis))]
) ;end of cond
) ;end of define
Run Code Online (Sandbox Code Playgroud)
但你们可能会注意到这只会解决最后的内部括号,所以如果我这样做,(MyEval '(1 + (1 + 2)))我会得到3,而不是4.任何指导或提示都会受到赞赏,我不知道我的标题有多准确,但如果不是适当的请告诉我.
谢谢!
我正在使用R5RS(球拍).这是我的例子
(map (lambda (x) (list (apply + x) (apply * x))) '((1 2 3) (4 5 6)))
-> ((6 6) (15 120))
Run Code Online (Sandbox Code Playgroud)
我只是想知道如果有这样的内置函数
(map-apply '(+ *) '((1 2 3) (4 5 6)))
Run Code Online (Sandbox Code Playgroud)
这可能会产生相同的结果.
我很难理解如何为lambda表达式的家庭作业问题构建解决方案.我必须编写一个函数,它接受一个参数F,它是一个谓词函数,并返回一个F函数的新函数.
我知道在我的函数中的某个地方我将返回传入的谓词函数中的值而不是返回反向但我对其余的问题描述感到困惑.问题表明"你需要一个lambda内的lambda.因为你不知道F将采用多少个参数(实际上可能采用一个变量号),你将不得不使用apply和语法来定义一个lambda表达式这需要任意数量的参数"
我不明白如何设置嵌套的lambda表达式来做我想做的事情,返回F可能的反转.我一直在尝试一些不同的东西,只是为了看看我是否可以到达任何地方,但我不明白嵌套的lambda表达式如何工作到足以让我到处都是.
(define converse
(lambda (F)
(lambda
(apply (not (F))))))
Run Code Online (Sandbox Code Playgroud)
我知道这不起作用,但我需要帮助了解如何设置我的嵌套lambda表达式来做我想要的.
我认为这是一个非常微不足道的问题,但我还没有看到任何好的例子.我需要定义一个不带参数的lambda表达式,并且总是返回0.
我如何定义一个不带任何参数的lambda表达式并返回一些东西?