> 1 <
Автор | Сообщение |
SimpleGirl
2 сообщений |
#7462 2014-11-17 23:47 GMT+3 часа(ов) |
Только начала изучать Ским.
Подскажите пожалуйста где ошибка: я пишу функцию которая берет предложение и ищет в нем знак "=" если найдет то предожение до знака равно это будет Термин а после знака равно это Определение, я написала функцию а компилятор ругается говорит что плохой синтаксис вот тут:(let((i 1)(j length expr)))(let((k length expr)(expr2 expr))) (define termAndDefinition (lambda (expr) (let((i 1)(j length expr))) (let((k length expr)(expr2 expr))) (if(equal? "=" (substring expr (- k i) j)) (let(term substring expr 0 (- k 1)) (definition substring expr2 (+ k 1))) (termAndDefinition (substring expr 0 k))))) |
|
skelter
56 сообщений |
#7465 2014-11-19 23:53 GMT+3 часа(ов) |
Лучше используйте умный редактор, который будет расставлять вам отступы. Вот ваш код:
(define term-and-definition Сразу видно, что два let-а на одном уровне, то есть второй let не попал в тело первого. И if не попал в тело ни одного из них, то есть в if-ве переменные k, i, j, l неопределены. Ошибкой является (j length expr). В let-е инициализация идёт парами: переменная-значение. А тут переменная (j), значение (length) и ещё неизвестно что (expr). Если вы хотите вычислить длину expr, вам нужно написать (length expr) в скобках. Ещё пара моментов по оформлению. Вместо camelCase используются дефисы. Скобки используются не совсем так как в других языках: если коротко, то пробелы разделяют, скобки группируют. Поэтому перед скобкой обычно ставят пробел. |
|
SimpleGirl
2 сообщений |
#7475 2014-11-23 03:07 GMT+3 часа(ов) |
Спасибо!!!
|
|
> 1 <