Scheme 球拍方案在函数中定义常数

Scheme 球拍方案在函数中定义常数,scheme,racket,Scheme,Racket,我开始策划。我有这样的功能: (define (getRightTriangle A B N) ( cond [(and (integer? (sqrt (+ (* A A) (* B B)))) (<= (sqrt (+ (* A A) (* B B))) N)) (list (sqrt (+ (* A A) (

我开始策划。我有这样的功能:

(define (getRightTriangle A B N) (
                            cond
                              [(and (integer? (sqrt (+ (* A A) (* B B)))) (<= (sqrt (+ (* A A) (* B B))) N))
                               (list (sqrt (+ (* A A) (* B B))) A B)
                               ]
                              [else (list)]

                            )
(define (getRightTriangle A B N)
  (define distance (sqrt (+ (* A A) (* B B))))
  (cond [(and (integer? distance) (<= distance N))
         (list distance A B)]
        [else (list)]))
(定义(getRightTriangle A B N)(
康德
[(和(整数)(sqrt(+(*A)(*B)))(看看let形式(及其相关形式let*、letrec和letrec*))。
好的描述是和。

看看let表单(及其相关表单let*、letrec和letrec*)。
好的描述是和。

您有两个选项,对于初学者,您可以使用如下特殊形式:

(define (getRightTriangle A B N) (
                            cond
                              [(and (integer? (sqrt (+ (* A A) (* B B)))) (<= (sqrt (+ (* A A) (* B B))) N))
                               (list (sqrt (+ (* A A) (* B B))) A B)
                               ]
                              [else (list)]

                            )
(define (getRightTriangle A B N)
  (define distance (sqrt (+ (* A A) (* B B))))
  (cond [(and (integer? distance) (<= distance N))
         (list distance A B)]
        [else (list)]))
或者使用其中一种特殊形式创建局部变量,IMHO是最干净的方法:

(define (getRightTriangle A B N)
  (let ((distance (sqrt (+ (* A A) (* B B)))))
    (cond [(and (integer? distance) (<= distance N))
           (list distance A B)]
          [else (list)])))
(定义(getRightTriangle A B N)
(let)((距离(sqrt(+(*A A)(*B BЮЮ))))

(cond[(和(整数?距离)(您有两个选项,对于初学者,您可以使用如下特殊形式:

(define (getRightTriangle A B N) (
                            cond
                              [(and (integer? (sqrt (+ (* A A) (* B B)))) (<= (sqrt (+ (* A A) (* B B))) N))
                               (list (sqrt (+ (* A A) (* B B))) A B)
                               ]
                              [else (list)]

                            )
(define (getRightTriangle A B N)
  (define distance (sqrt (+ (* A A) (* B B))))
  (cond [(and (integer? distance) (<= distance N))
         (list distance A B)]
        [else (list)]))
或者使用其中一种特殊形式创建局部变量,IMHO是最干净的方法:

(define (getRightTriangle A B N)
  (let ((distance (sqrt (+ (* A A) (* B B)))))
    (cond [(and (integer? distance) (<= distance N))
           (list distance A B)]
          [else (list)])))
(定义(getRightTriangle A B N)
(let)((距离(sqrt(+(*A A)(*B BЮЮ))))

(cond[(和(整数?距离)(请正确缩进,括号对
()
不应像在其他编程语言中是大括号一样匹配。另外,请参阅我下面的答案,以了解其他可能的方法来完成您的提问。请正确缩进,括号对
()
不应该像其他编程语言中的大括号一样匹配它们。
{}
。另外,请参阅下面我的答案,以了解实现您要求的其他可能方法