如何使用scheme调用另一个函数中的函数?

时间:2017-10-17 14:49:07

标签: scheme lisp racket

我正在学习Scheme,所以我正在做一个有两个功能的程序,根据飞行的人数和飞机上的座位数来计算飞机的数量。直到那里一切正常,问题是当我尝试在另一个中使用该功能时,我不知道该怎么做。

第一个功能:

(define calculate-aeroplanes
  (lambda (passengers seats)
    (ceiling (/ passengers seats))))

关于第二项功能,我想为每架飞机收取1000美元的费用,如果它少于11架飞机,从第11架飞机开始费用为500美元,每位乘客将收取50美元的费用

我在这里做了什么:

(define fee-airport
  (lambda (passengers seats)
    (cond
      ((< calculate-aeroplanes (passengers seats) 11)
       (+ (* calculate-aeroplanes 1000)
          (* passengers 50)))
      ((> calculate-aeroplanes (passengers seats) 10)
       (+ (* calculate-aeroplanes (passengers seats) 10000)
          (* (- calculate-aeroplanes (passengers seats) 10) 500)
          (* passengers 50))))))

3 个答案:

答案 0 :(得分:3)

Scheme中函数调用的语法是(function-name arguments),而不是function-name(arguments)。在调用<+等时,您使用正确的语法,但在调用calculate-aeroplanes时却没有。

答案 1 :(得分:1)

在您的代码示例中,您使用的是++无论如何都不是特别的,它只是一个简单的功能。要应用函数,只需将其放在表单的开头即可。

(calculate-aeroplanes passenger seats) 

将使用乘客和座位参数调用计算飞机)

答案 2 :(得分:-1)

是语法问题,谢谢这里的新代码:

(define fee-airport
   (lambda(passengers seats)
     (calculate-aeroplanes passengers seats)
     (cond
       ((< (calculate-aeroplanes passengers seats) 11)
         (+ (* (calculate-aeroplanes passengers seats)1000) (* passengers 
            50)))
       ((> (calculate-aeroplanes passengers seats) 10)
             (+ (* (calculate-aeroplanes passengers seats )10000) (* (- 
             (calculate-aeroplanes passengers seats) 10) 500)  (* passengers 
                   50))))
       )
 )