我有一个使用该命令执行的方案程序; (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的素数
答案 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。