Racket小白

1欢迎使用Racket

2016-04-22  本文已影响3461人  jarod_chan

Racket是

1.1和Racket交互

DrRacket底部的文本区域和racket命令行程序都像是一个计算器。输入一个racket表达式,敲入回车键,结果就会被打印出来。这种交互被叫做读取求值打印循环简称REPL。
数字是一个表达式,它求值的结果就是一个数字。
>5
5
字符串也是一个表达式并被求值成它自己。一个字符串以双引号开始和结束。
Racket使用括号来表示大型的表达式,几乎任何表达式或者简单的常量。比如,函数调用写成(函数名 参数···)。

1.2 定义和交互

你能使用define定义自己的函数。尽管你能在REPL里执行define,定义经常被保留并在之后使用。所以,在DrRacket里,你一般吧定义放在顶部区域-叫做定义区-并使用#lang作为前缀。
#lang racket
(define (extract str)
(substring str 4 7))
如果调用(extract "the boy")是主程序的一部分,那么应该放置在定义区。但是如果它只是一个例子表达式,用来探索exttact的用法,那么你他它留在定义区,点击运行,然后在repl里执行(extract "the boy")。
当使用命令行程序而不是在DrRacket里面运行,你可以使用你最喜欢的编辑器来保存上面的代码。如果你保存成"extract.rkt",然后在同一目录运行racket,你可以像下面这样执行
>(enter! "extract.rkt")
>(extract "the gal out of the city")
"gal"
enter!形式加载文件的代码并切换执行环境到模块内部,和DrRacket的运行按钮执行相同的操作。

1.3创建可执行文件

如果你的文件或者DrRacket的定义区域包含下列代码
#lang racket
(define (extract str)
(substring str 4 7))
(extract "the cat out of the bag")
它是一段完整的程序当执行时打印出“cat”,在DrRacket里面或者使用enter!形式在命令行里。但是如果程序被保存在<src-filename>的文件里,你可以在命令行里使用命令运行
racket <src-filename>
为了打包程序变成一个执行文件,你可以使用以下方法

1.4Lisp/Scheme的备注

如果你已经知道了Scheme或者Lisp,你可以把下面代码
(define (extract str)
(substring str 4 7))
放在"extract.rktl"里面并使用下面命令运行
>(load "extract.rktl")
>(extract "the dog out")
"dog"
这样也可以运行,因为racket会模仿传统的lisp环境,但是我们强烈建议不要使用load或者在一个模块外层运行代码。
定义运行在模块外部会产生很多问题。比如不好的错误信息,性能不好,不能很好整合。模块系统设计可以很好的避免问题。

上一篇下一篇

猜你喜欢

热点阅读