(scheme base)
R7RS 基础库,提供了 Scheme 最核心的功能。
导入
scheme
(import (scheme base))
; 或
(import (liii base)) ; Goldfish 扩展版本定义形式
| 形式 | 描述 | 示例 |
|---|---|---|
define | 定义变量/函数 | (define x 10) |
define-syntax | 定义宏 | (define-syntax when ...) |
lambda | 创建函数 | (lambda (x) (+ x 1)) |
let | 局部绑定 | (let ((x 10)) x) |
let* | 顺序绑定 | (let* ((x 10) (y x)) y) |
letrec | 递归绑定 | (letrec ((f (lambda () (f)))) ...) |
let-values | 多值绑定 | (let-values (((a b) (values 1 2))) ...) |
控制流
| 形式 | 描述 | 示例 |
|---|---|---|
if | 条件 | (if (> x 0) 'positive 'negative) |
cond | 多条件 | (cond ((< x 0) 'neg) ((> x 0) 'pos)) |
case | 分支 | (case x ((1 2) 'small) (else 'large)) |
and | 逻辑与 | (and (> x 0) (< x 10)) |
or | 逻辑或 | (or (null? lst) (car lst)) |
when | 真时执行 | (when (> x 0) (display x)) |
unless | 假时执行 | (unless (null? lst) (car lst)) |
begin | 顺序执行 | (begin (display 1) (display 2)) |
do | 循环 | (do ((i 0 (+ i 1))) ((>= i 10)) ...) |
数值
基本运算
| 函数 | 描述 | 示例 |
|---|---|---|
+ | 加 | (+ 1 2 3) => 6 |
- | 减 | (- 10 3) => 7 |
* | 乘 | (* 2 3 4) => 24 |
/ | 除 | (/ 10 2) => 5 |
quotient | 商 | (quotient 10 3) => 3 |
remainder | 余数 | (remainder 10 3) => 1 |
modulo | 模 | (modulo -10 3) => 2 |
数值谓词
| 函数 | 描述 | 示例 |
|---|---|---|
= | 相等 | (= 1 1.0) => #t |
< | 小于 | (< 1 2 3) => #t |
> | 大于 | (> 3 2 1) => #t |
<= | 小于等于 | (<= 1 1 2) => #t |
>= | 大于等于 | (>= 3 3 2) => #t |
其他函数
| 函数 | 描述 | 示例 |
|---|---|---|
abs | 绝对值 | (abs -5) => 5 |
max | 最大值 | (max 1 5 3) => 5 |
min | 最小值 | (min 1 5 3) => 1 |
floor | 向下取整 | (floor 3.7) => 3 |
ceiling | 向上取整 | (ceiling 3.2) => 4 |
round | 四舍五入 | (round 3.5) => 4 |
truncate | 截断 | (truncate 3.7) => 3 |
sqrt | 平方根 | (sqrt 16) => 4 |
expt | 幂 | (expt 2 3) => 8 |
列表
| 函数 | 描述 | 示例 |
|---|---|---|
cons | 构造点对 | (cons 1 '(2 3)) => (1 2 3) |
car | 第一个元素 | (car '(1 2 3)) => 1 |
cdr | 剩余元素 | (cdr '(1 2 3)) => (2 3) |
list | 创建列表 | (list 1 2 3) => (1 2 3) |
length | 列表长度 | (length '(1 2 3)) => 3 |
append | 连接列表 | (append '(1 2) '(3 4)) => (1 2 3 4) |
reverse | 反转列表 | (reverse '(1 2 3)) => (3 2 1) |
map | 映射 | (map (lambda (x) (* x 2)) '(1 2 3)) => (2 4 6) |
for-each | 遍历 | (for-each display '(1 2 3)) |
filter | 过滤 | (filter odd? '(1 2 3 4 5)) => (1 3 5) |
assq | 查找 | (assq 'a '((a . 1) (b . 2))) => (a . 1) |
更多函数
更多详细文档请参考 (liii base)。
