Gambit 2.Gambit解释器

翻译 2016年08月29日 16:45:32
gsi [-:runtimeoption,…] [-i] [-f] [-v] [[-] [-e expressions] [file]]

2.1交互模式

交互模式是一个”读-执行-打印 循环(read-eval-print loop)” 简称REPL。

输入和输出通过交互信道进行相互作用。交互通道可以通过运行时选项来指定,如果没有指定,取决于系统的默认配置。默认情况下,’(current-input-port)’,’(current-output-port)’和’(current-error-port)’ 都指向交互信道。

表达式在全局交互环境中进行运算。解释器通过定义和宏定义的形式向环境中追加定义内容。

例:
$ gsi
Gambit v4.8.5

> (define (fact n) (if (< n 2) 1 (* n (fact (- n 1)))))
> (map fact '(1 2 3 4 5 6))
(1 2 6 24 120 720)
> (values (fact 10) (fact 40))
3628800
815915283247897734345611269596115894272000000000
> ,q      ;结束

2.2批处理模式

在批处理模式中,命令行中的文件是用于被加载的代码文件。(‘-‘选项)进入REPL,(‘-e’选项)后接表达式字符串。(‘-‘和’-e’选项)可以与文件名多次出现在命令行上。

文件的扩展名未指定时,自动查找该无扩展名的文件,若该文件也不存在时,查找版本号为1的该文件名对应的’.on’文件,若也不存在,就查找对应的’.scm’或’.six’文件(两种文件以更新时间最新的优先)。
※’.six’是中缀式文件,参照第18章。

2.3进程退出状态

正常结束时,退出状态为0,否则为非0值。

错误状态表:
64 - 启动参数(运行时参数)或环境变量GAMBOPT包含语法错误或无效。
70 - 收到未被处理的线程异常。
71 - 初始化运行时系统出现问题,例如申请的内存不足。

$ gsi -:d0 -e "(pretty-print (expt 2 100))"
1267650600228229401496703205376
$ echo $?
0
$ gsi -:d0,unknown # try to use an unknown runtime option
$ echo $?
64
$ gsi -:d0 nonexistent.scm # try to load a file that does not exist
$ echo $?
70
$ gsi nonexistent.scm
*** ERROR IN ##main -- No such file or directory
(load "nonexistent.scm")
$ echo $?
70

$ gsi -:m4000000 # ask for a 4 gigabyte heap
*** malloc: vm_allocate(size=528384) failed (error code=3)
*** malloc[15068]: error: Can't allocate region
$ echo $?
71

注:
'-:d0'       - 禁止输出错误信息。
'-:m4000000' - 设置堆的最小大小为。 

2.4脚本

#!/usr/local/Gambit/bin/gsi-script

(for-each pretty-print (directory-files))

或中缀式脚本:

#!/usr/local/Gambit/bin/six-script

void main (obj n_str)
{
  int n = \string->number(n_str);
  for (int i=1; i<=n; i++)
    \pretty-print(i);
}

为了提高可移植性,一个比较好的办法是,利用’/usr/bin/env’,这样程序就会通过用户的’PATH’定义来查找解释器的路径。

#!/usr/bin/env gsi-script

(define (display-file filename)
  (display (call-with-input-file filename
             (lambda (port)
               (read-line port #f)))))

(for-each display-file (cdr (command-line)))

2.5编译脚本

$ cat square.scm
#!/usr/local/Gambit/bin/gsi-script -:d0
(define (main arg)
  (pretty-print (expt (string->number arg) 2)))
$ gsi square 30        # gsi will load square.scm
900
$ gsc -exe square      # compile the script to a standalone program
$ ./square 30
900
$ ./square 1 2 3       # too many arguments to main
$ echo $?
70
$ ./square -:d1 1 2 3  # ask for error message
*** ERROR -- Wrong number of arguments passed to procedure
(main "1" "2" "3")

Gambit Journal 学习笔记之一

在 Gambit 使用过程中,Journal 可以大大简化重复性的操作,避免疯狂点击各种按钮、文本框、下拉框。Gambit Journal 的语法相对比较简单,但涉及的内容不少,所以特做这个笔记,以促...
  • fox000002
  • fox000002
  • 2008年11月19日 12:05
  • 2047

Gambit建模中split的用法

在Gambit建模中会遇到一些凹槽等结构,需要两个规则结构进行split的,但是利用Split时,到底哪部分切割哪部分呢?剩余部分是否保存呢? 在这里,用例子来解释上面的问题。 Volume选...
  • u012712099
  • u012712099
  • 2017年01月05日 15:18
  • 1292

Exceed 13+Gambit 2.4.6 +Tgrid 安装

Introductions Exceed 是在windows操作系统下提供Unix操作环境的软件,现在已经不再更新,最新版本为Exceed 13。 Gambit 是一种网格生成软件,必须在Unix环境...
  • csdn_username_blog
  • csdn_username_blog
  • 2016年03月18日 14:04
  • 4966

gambit多面整合

gambit是fluent流体模拟软件的前端建模工具要保证fluent的模拟运算质量,就必须通过gambit生成高品质运算网格...
  • tianhuadihuo
  • tianhuadihuo
  • 2011年07月21日 13:41
  • 2864

Scheme学习系列O:启动篇

如果你也在陶冶情操闲暇时以SICP为乐,那必须先利其器 1. Structure and Interpretation of Computer Programs 《计算机程序的解释与构造》     ...
  • u010164190
  • u010164190
  • 2016年08月06日 16:14
  • 233

Gambit 6.编辑环境

6.1 控制台行编辑 默认情况下控制台启动一个简单的面向Scheme友好的行编辑用户界面。它提供以下几个功能: 匹配左右括号 记录输入命令行的内容,以方便快速输入 自动补全功能 ...
  • guodongsoft
  • guodongsoft
  • 2016年09月29日 17:13
  • 211

Gambit Journal 学习笔记之二

《Gambit Journal 学习笔记之一》之后已经很长时间,现在可以继续了。这次的任务是二维圆管流动的模拟。先用gambit 的脚本生成模型。 先给 jou 文件吧。 / Pipe flow (2...
  • fox000002
  • fox000002
  • 2009年04月13日 01:39
  • 2108

Gambit 命令之 dgui createitem (5)

继续介绍其他 dgui 子窗体,包括 optionmenu,vector, rowcolumn。 (1) OptionMenu  syntax: dgui createitem   optionmen...
  • fox000002
  • fox000002
  • 2009年08月13日 12:13
  • 510

如何在gambit中简化带隔板的模型(转载)

为了答谢广大博友的捧场,特别炮制了这个简单的教程,时间仓促,思维有点混乱,请将就着看。 在实际模拟中经常会遇到流域中存在薄板的情况,如下图,其实这种薄板的厚度跟流域的尺度相比实在太小了,如果直接划分...
  • lqlong19922008
  • lqlong19922008
  • 2012年10月11日 13:36
  • 1586

pycharm修改解释器

最近把python原装的解释器卸载了,装了anaconda作为解释器,造成的后果就是pycharm找不到解释器了。     解决办法:pycharm》file》default setting》pro...
  • xiaotao_1
  • xiaotao_1
  • 2017年04月22日 13:53
  • 3030
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gambit 2.Gambit解释器
举报原因:
原因补充:

(最多只允许输入30个字)