【问题标题】:Error of calling functions in SchemeScheme中调用函数的错误
【发布时间】:2015-01-16 02:13:29
【问题描述】:

我正在尝试使用 Scheme 定义两个函数。一个是 close_to 函数,如下所示:

    (define (close_to x y)(if(< (abs (- x y)) 0.0001)(#t)#f))

如果数字 x 和 y 的差值小于 0.0001,它应该返回 true,否则返回 false。但是,它一直抛出错误:

函数调用:在左括号后期望一个函数,但接收到 true

当我调用它时

    (close_to 4 3.99999999)

第二个函数是改进函数,如下所示:

    (define (improve x y)(average y /(x y)))

它应该返回 y 和 x/y 的平均值。同样,我得到了错误:

函数调用:在左括号后期望一个函数,但收到了 1

当我调用它时

    (improve 1 2)

我做错了什么?谁能帮我?

【问题讨论】:

  • #t,而不是(#t)(/ x y),不是/(x y)
  • 是的!有效。谢谢!!! :)
  • P.S. Scheme,不是 Lisp,也绝对不是 LISP。

标签: function scheme call parentheses


【解决方案1】:

您的问题是 (#t) 和 (#f)。

#t 不是函数。而是像这样重写第一个:

(define (close_to x y)
  (if (< (abs (- x y)) 0.0001)
    #t
    #f))

另一个是给读者的练习。

【讨论】:

  • (define (close_to x y) (&lt; (abs (- x y)) 0.0001)) 可以。
猜你喜欢
  • 2018-03-22
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多