组! Racket模块ERROR中的未绑定标识符

时间:2016-01-22 19:06:52

标签: scheme racket

我尝试编写一个在第一个和第二个参数之间返回一个随机数的函数。

(随机 - 40 80之间)

应该提供40到80之间的随机数。这是代码:

(define (random-between x y)
   ((set! result (random y))
        (if (> result x)
            result
            (random-between x y))))

我想当函数第二次递归运行时,随机函数会创建一个新的结果,它会再次被测试,如果它高于x,则输出为最终结果。

这是我第一次使用“套装!”它给了我这个错误:

set!:模块中的未绑定标识符:结果

其他类似的问题并没有帮助我找到解决方案。

1 个答案:

答案 0 :(得分:1)

我会回答我自己的问题,因为我希望其他人回答这个问题。不是狡猾的答案或预订建议。

是的,您需要使用具有以下语法的 let

(let ([id value]) body-which-is-evaluated-after)

这是没有速度效率递归的代码。

(define (random-between x y)
    (let ([result (- y x)]) 
         (+ (random result) x)))