yey*_*eyo 2 linux scheme scheme48
我正在学习Scheme。我想为 Gimp 构建script-fu过滤器,所以我使用tinyscheme来执行我制作的脚本,但似乎tinyscheme的功能非常有限,缺少max、min和等功能even?。(我希望有人能在这里证明我错了:()
好吧,实际上,我只想用scheme48执行一个Scheme脚本。我怎么做?
例如,如何使用scheme48执行以下文件?
(define (addx inNum inX)
(if (> (* inNum inX) 999) 0
(+ (* inNum inX) (addx inNum (+ 1 inX)))))
(display
(- (+ (addx 3 1) (addx 5 1)) (addx 15 1)))
Run Code Online (Sandbox Code Playgroud)
小智 5
我也无法成功使用scheme48运行scheme脚本(并且我无法\xe2\x80\x99t在手册中找到提示)。您也可以使用 Guile (假设您正在使用 Linux 或类似的东西):
\n\n#!/usr/local/bin/guile -s\n!#\n\n(define (addx in-num in-x)\n (if (> (* in-num in-x) 999)\n 0\n (+ (* in-num in-x) (addx in-num (+ 1 in-x)))))\n\n(display (- (+ (addx 3 1) (addx 5 1)) (addx 15 1)))\n(newline)\nRun Code Online (Sandbox Code Playgroud)\n\n保存然后运行:
\n\n$chmod u+x test.scm\n./test.scm \n233168\n$\nRun Code Online (Sandbox Code Playgroud)\n\n(顺便说一句:请不要像C那样格式化Scheme \xe2\x80\x99t)。
\n\n编辑
\n\n根据 Mike Sperber 在Scheme48 邮件列表上的帖子,shebanging 是行不通的。显式调用Scheme48 的方式如下:
\n\n#!/bin/bash\nscheme48 -a batch << EOF\n(letrec ((fac (lambda (n)\n (if (= n 1)\n 1\n (* n (fac (- n 1)))))))\n (fac 5))\nEOF\n\n$ ./test.scm\n120\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1689 次 |
| 最近记录: |