Scheme:我的代码有什么问题?

sara_123

这个问题可能很容易,但是我花了一些时间,却无法弄清问题所在。我是Scheme的新手;)好的,这是我的代码:

(define foo
        (lambda (x)
              ((if(equal? (car x) 4) "A" "B")
               (if(equal? (car (cdr x)) 3) "A" "B")
               (if(equal? (car(cdr (cdr x))) 5) "A" "B")
               )
               ))


(foo '(4 3 5))

运行代码时出现以下错误:

>  application: not a procedure;  expected a procedure that can be
> applied to arguments   given: "A"   arguments...:    "A"    "A"
奥斯卡·洛佩兹(Oscar Lopez)

要解决该错误,只需执行以下操作:

(define foo
  (lambda (x)
    (if (equal? (car x) 4) "A" "B")
    (if (equal? (car (cdr x)) 3) "A" "B")
    (if (equal? (car (cdr (cdr x))) 5) "A" "B")))

问题?在您的代码中()if表达式周围有一对错误的附加信息,因此Scheme认为if返回的是函数(不是)。请记住,在Scheme中,这:的(f)意思是:f作为不带参数的函数执行

现在我们发现了语法错误,让我们看看代码还有什么问题。对于初学者,如果在过程内编写一系列表达式,则仅返回最后一个的值,因此前两个if将被完全忽略!阅读我的理解是要返回的意见后"AAA"为输入'(4 3 5)"ABA"输入'(4 6 5)这里的窍门是我们必须使用string-append所有字符串将它们粘在一起:

(define foo
  (lambda (x)
    (string-append
     (if (equal? (car x) 4) "A" "B")
     (if (equal? (cadr x) 3) "A" "B")
     (if (equal? (caddr x) 5) "A" "B"))))

现在,它可以按预期工作:

(foo '(4 3 5))
=> "AAA"
(foo '(4 6 5))
=> "ABA"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的SQL代码有什么问题?

来自分类Dev

我的算法/代码有什么问题?

来自分类Dev

我的代码有什么问题?

来自分类Dev

我的车辆代码有什么问题?

来自分类Dev

我的Listview代码有什么问题?

来自分类Dev

我的C代码有什么问题

来自分类Dev

我的算法代码有什么问题?

来自分类Dev

我的算法/代码有什么问题?

来自分类Dev

我的js代码有什么问题?

来自分类Dev

我的代码有什么问题?

来自分类Dev

我的C代码有什么问题?

来自分类Dev

我的代码有什么问题?

来自分类Dev

我的代码具体有什么问题?

来自分类Dev

我的Haskell代码有什么问题?

来自分类Dev

我的Angular代码有什么问题?

来自分类Dev

我的svg代码有什么问题?

来自分类Dev

我的 sql 代码有什么问题

来自分类Dev

我的汇编代码有什么问题

来自分类Dev

我的 LRUCache 代码有什么问题

来自分类Dev

我的 tensorflow 代码有什么问题

来自分类Dev

我的查询代码有什么问题?

来自分类Dev

我的 Leetcode 问题的 Python 代码有什么问题#315

来自分类Dev

我的代码有什么问题,请帮助我

来自分类Dev

没有输出,我的代码有什么问题?

来自分类Dev

代码有什么问题?

来自分类Dev

我的Python 3x代码有什么问题?

来自分类Dev

我在Java迭代器中的代码有什么问题

来自分类Dev

我的PHP日历代码有什么问题?

来自分类Dev

我的Java代码有什么问题?(解析错误)