首页 > 解决方案 > Let-Form 在 Scheme 中绑定值

问题描述

我应该重新实现以前实现的称为“产品”的过程。我将使用 let-form 绑定值并使用(ProductLet 60 40). 我的代码不能正常工作,我不知道为什么。

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

标签: schemeracket

解决方案


您的代码看起来不错 - 好吧,我将删除带有pq正文的前两行let,它们在那里实际上什么也没做:

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

(ProductLet 60 40)
=> 2400

请注意,a 的主体let就像过程的主体:所有的表达式都会被执行,但只会返回最后一个表达式的值。例如,如果您想显示需要显式打印它们的变量,因为在执行过程时不会返回它们:

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

(ProductLet 60 40)
60
40
2400

推荐阅读