2014-11-18 1 views
0

Я пытаюсь определить две функции, используя Схему. Одним из них является функция close_to, которая выглядит следующим образом:Ошибка вызова функций в схеме

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

он должен вернуть истину, если число х и у имеет значение, которое меньше, чем 0,0001 и ложь в противном случае. Тем не менее, он продолжает бросать ошибку:

function call: expected a function after the open parenthesis, but received true

, когда я называю его

(close_to 4 3.99999999) 

Второй функцией является улучшение функции, которая выглядит следующим образом:

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

он должен вернуть в среднем от y и x/y. Кроме того, я получаю сообщение об ошибке:

function call: expected a function after the open parenthesis, but received 1

, когда я называю его

(improve 1 2) 

Что я делаю неправильно? Может кто-нибудь мне помочь?

+1

'# t', а не' (#t) '. '(/ x y)', а не '/ (x y)'. – uselpa

+0

YEAH !! это сработало. Благодаря!!! :) – paupau

+0

P.S. Схема, а не Lisp, и, безусловно, не LISP. –

ответ

0

Ваша проблема в (#t) и (#f).

#t не является функцией. Скорее перепишите первый такой вариант:

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

Другое упражнение для читателя.

+1

'(define (close_to x y) (<(abs (- x y)) 0.0001))' будет делать. – uselpa