Позволить форме связать значения в схеме - PullRequest
0 голосов
/ 11 ноября 2019

Я должен переопределить ранее реализованную процедуру под названием «Продукт». Я должен использовать значения привязки let-form и проверить его с помощью (ProductLet 60 40). Мой код не работает должным образом, и я не уверен, почему.

(define (ProductLet a b)
(let ((p a)(q b))
    p q
    (* p q))
  )                  
(ProductLet 60 40)

1 Ответ

0 голосов
/ 11 ноября 2019

Ваш код выглядит нормально - я бы удалил первые две строки с p и q в теле let, они там буквально ничего не делают:

(define (ProductLet a b)
  (let ((p a) (q b))
    (* p q)))

(ProductLet 60 40)
=> 2400

Помните, что тело let подобно телу процедуры: все выражения будут выполнены, но будет возвращено только значение последнего выражения. Например, если вы хотите отобразить переменные, которые вам нужны, чтобы явно напечатать их, поскольку они не будут возвращены при выполнении процедуры:

(define (ProductLet a b)
  (let ((p a) (q b))
    (displayln p)
    (displayln q)
    (* p q)))

(ProductLet 60 40)
60
40
2400
...