Схема допускает синтаксическую ошибку

#scheme #let

#схема #пусть

Вопрос:

 (define (rec base height)
  (let ((product (* base height))(half 0.5))
   (let ((sum (* product half)))
     (display "Area is")
     (display sum))))


let: expected only one expression after the name-defining sequence, but found one extra part in: (display sum)
  

У меня ошибка, как указано выше, я не знаю, какая часть идет не так

Ответ №1:

В полной схеме это разрешено. Однако вы, вероятно, используете один из обучающих вариантов Scheme (например, Intermediate Student или Advanced Student), предоставляемых Racket, который запрещает функции с более чем одним выражением.

Я бы сказал, что вы можете обойти это с помощью begin , но Intermediate Student также не предоставляет begin (похоже, что Advanced Student, что помогает). Если вы используете Intermediate Student, я думаю, вы просто не предназначены для использования нескольких выражений, и все. 🙂

Ответ №2:

Языки начального и промежуточного уровня для учащихся действительно плохо подходят для программ, использующих ввод-вывод. Если ваш преподаватель задает задачи, которые требуют от вас использования одного из этих языков, а также требуют, чтобы вы что-то распечатали, это было бы несколько неподходящим заданием.

Для протокола, я, конечно, сам допускаю подобные ошибки….