保存通过调用不同arity的相同函数生成的所有结果。

时间:2016-01-14 14:38:58

标签: random file-io racket

我有多个调用函数的模块:my-random 该函数采用0或1个参数。我想要做的是将结果写入对该函数的所有调用并将其保存在文件中,然后重新运行该程序,而是提供该文件以便使用这些随机数。

这是我保存函数输出的原因:

  (define random-port (open-output-file "random-numbers.rktl" #:exists 'replace))

(define (my-random [x #f])
    (define y (if x (random0 x) (random0)))
    (displayln y random-port)
    y)

这并没有保存所有数字,因为我应该在完成所有调用后关闭端口,但我不想在特定点关闭它。反正有吗?

其次,该功能是我们如何取回随机数并重新使用它们。问题是我会得到一个arity不匹配,因为我的随机有0或1个参数,而且,这可以修复吗?

  (require racket/generator)

  (define my-random
    (generator
     (_)
     (for ([x (file->list "random-numbers.rktl")])
       (yield x))))

非常感谢你!

1 个答案:

答案 0 :(得分:0)

通过为每个使用随机数的函数生成一个文件来解决,而不是让一个文件包含整个程序的随​​机数。