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中简化带隔板的模型(转载)

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

Gambit 5.调试

表达式的执行可能因为下列原因而停止: 1. 运算错误,比如除0。 2. 用户中断运算 (通常是通过输入)。 3. 停在断点上等。 4. 单步模式被启动。 当运算被停...

Exceed 13+Gambit 2.4.6 +Tgrid 安装

Introductions Exceed 是在windows操作系统下提供Unix操作环境的软件,现在已经不再更新,最新版本为Exceed 13。 Gambit 是一种网格生成软件,必须在Unix环境...

Gambit 6.编辑环境

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

GAMBIT FLUENT 简要介绍

fluent软件的组成: 软件功能介绍: GAMBIT-------用于建立几何结构和网格的生成 FLUENT-------用于进行流动模拟计算的求解器 proPDF------用于模拟PDF...

gambit经验

Gambit体网格划

  • 2015-01-13 13:41
  • 2.28MB
  • 下载

The Python Tutorial 3.2-2使用Python解释器

2. Using the Python Interpreter(使用Python解释器) 2.1. Invoking the Interpreter(调用解释器) The Python int...
  • Lbeta
  • Lbeta
  • 2012-02-10 13:31
  • 635

gambit网格质量判断

  • 2014-08-06 17:32
  • 14KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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