首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scheme48正确地执行程序?

如何使用scheme48正确地执行程序?
EN

Stack Overflow用户
提问于 2013-01-02 17:27:30
回答 1查看 1.5K关注 0票数 1

我在学习计划。我想为Gimp构建脚本-fu过滤器,所以我使用tinyscheme来执行我编写的脚本,但看起来tinyscheme的函数集非常有限,比如maxmineven?等函数都缺失了。(我希望有人在这里证明我错了。)

好的,实际上,我只想用scheme48执行一个Scheme脚本。我该怎么做?

例如,如何使用scheme48执行以下文件

代码语言:javascript
复制
(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)))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-02 18:13:07

我也无法成功地使用scheme48运行一个方案脚本(而且我还没有在手册中找到一个提示)。您也可以使用Guile (假设您正在使用linux或类似的东西):

代码语言:javascript
复制
#!/usr/local/bin/guile -s
!#

(define (addx in-num in-x)
  (if (>  (* in-num in-x) 999)
      0
      (+ (* in-num in-x) (addx in-num (+ 1 in-x)))))

(display (- (+ (addx 3 1) (addx 5 1)) (addx 15 1)))
(newline)

保存它,然后运行:

代码语言:javascript
复制
$chmod u+x test.scm
./test.scm 
233168
$

(顺便问一句:请不要像C那样格式化方案)。

编辑

根据Scheme48邮件列表上的Mike的一篇文章,打蛋器是行不通的。可以通过以下方式来明确地调用Scheme48:

代码语言:javascript
复制
#!/bin/bash
scheme48 -a batch << EOF
(letrec ((fac (lambda (n)
             (if (= n 1)
                 1
                 (* n (fac (- n 1)))))))
 (fac 5))
EOF

$ ./test.scm
120
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14126397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档