> 1 <

Автор Сообщение

SimpleGirl

Members


Статус

2 сообщений

Где: Kazakhstan
Род занятий:
Возраст:

#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

Members


Статус

34 сообщений

Где: ---
Род занятий:
Возраст:

#7465   2014-11-19 23:53 GMT+3 часа(ов)      
Лучше используйте умный редактор, который будет расставлять вам отступы. Вот ваш код:
(define term-and-definition
(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)))
(term-and-definition (substring expr 0 k)))))


Сразу видно, что два let-а на одном уровне, то есть второй let не попал в тело первого. И if не попал в тело ни одного из них, то есть в if-ве переменные k, i, j, l неопределены.

Ошибкой является (j length expr). В let-е инициализация идёт парами: переменная-значение. А тут переменная (j), значение (length) и ещё неизвестно что (expr). Если вы хотите вычислить длину expr, вам нужно написать (length expr) в скобках.

Ещё пара моментов по оформлению. Вместо camelCase используются дефисы. Скобки используются не совсем так как в других языках: если коротко, то пробелы разделяют, скобки группируют. Поэтому перед скобкой обычно ставят пробел.

SimpleGirl

Members


Статус

2 сообщений

Где: Kazakhstan
Род занятий:
Возраст:

#7475   2014-11-23 03:07 GMT+3 часа(ов)      
Спасибо!!!
> 1 <


Онлайн :

0 пользователь(ей), 13 гость(ей) :




Реклама на сайте: