使用参数为scheme方案创建可执行文件

时间:2013-08-31 02:21:32

标签: scheme executable racket

我有一个使用该命令执行的方案程序; (primes< = n)给了我所有小于n的素数; (primes< = 200)给了我所有小于200的素数

如何在linux下为以下程序创建可执行文件,将n作为参数

---------Scheme Program------------------------------------------------

    #lang racket

(define  (interval-list m n)
  (if (> m n)
      '()
      (cons m (interval-list (+ 1 m) n))))
(define (sieve l)
  (define (remove-multiples n l)
    (if (null? l)
         '()
         (if  (= (modulo (car l) n) 0)      ; division test
              (remove-multiples n (cdr l))
              (cons (car l)
                    (remove-multiples n (cdr l))))))
  (if (null? l)
      '()
      (cons (car l)
             (sieve (remove-multiples (car l) (cdr l))))))
(define (primes<= n)
  (sieve (interval-list 2 n)))

上述程序执行为(primes&lt; = 100)打印所有小于100的素数

2 个答案:

答案 0 :(得分:1)

您似乎正在使用Racket,因此您应该按照these instructions创建可执行文件。通常,每个Scheme系统都提供自己的方法来创建可执行文件,因此您必须阅读系统附带的文档。

您可能喜欢Eratosthenes筛选的替代实施方案:

(define (primes n) ; sieve of eratosthenes
  (let ((ps (list)) (sieve (make-vector (+ n 1) #t)))
    (do ((p 2 (+ p 1))) ((< n p) (reverse ps))
      (when (vector-ref sieve p)
        (set! ps (cons p ps))
        (do ((i (* p p) (+ i p))) ((< n i))
          (vector-set! sieve i #f))))))

答案 1 :(得分:0)

您可以通过插入

将Racket模块转换为unix样式的脚本
#! /usr/bin/env racket

(如果球拍位于您的搜索路径中)位于顶部并使其可执行(chmod)。

有关详细信息,请参阅docs for creating unix-style scripts