Ваш код выглядит нормально - я бы удалил первые две строки с 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