<h1 align="center">软工科学导论笔记</h1>
运算
(+ x y)
(- x y)
(* x y)
(/ x y)
PS: 在lisp中,没有精确的小数,只有无限逼近(+ 0.1 0.2),结果为0.30000000000000004
函数
(define (func var...)
(exe)
...
output)
条件语句
- (if (condition)
true
false)
- (cond [(condition) (true)]
[(condition) (true)]
...
[else (true)])
PS: 任何值都为true,只有#f才为false
逻辑判断
- (and x y ... z) (or x y ... z)
- (not bool) (= x y ... z)
- (> x y ... z) (< x y ... z)
- (>= x y ... z) (<= x y ... z)
Practice: and,or,not 任选其二实现另一
常用函数方法
| 效果 | 表达式 |
|---|---|
| 取相反数 | (- x) |
| 取绝对值 | (abs x) |
| 取余 | (remainder x y) |
| 是否为空列表 | (null? list) // 非列表都返回#f |
| 是否为序对 | (pair? list) //非空的列表都返回#t |
| 对象本身是否相同 | (eq? x y) |
| 对象的值是否相同 | (eq? x y) |
| 打印一个换行 | (newline) |
| 打印 | (display x) |
| 格式化文本 | (format “hello ~a” var)<br>//占位符: ~a 通用 ~s 字符串 ~e 科学计数法 ~f小数<br>//~[width].[precision]f 宽度+精度 |
| 求平凡根 | (sqrt x) |
| 匿名函数 | ((lambda (若干形参) (过程体)) 若干实参) |
| 创建临时变量执行指令 | (let ([a x] ... [b y]) expr) |
List
| 方法 | 作用 |
|---|---|
| list | 构造列表 |
| cons | 构建列表(基于序对) |
| car | 获取头部元素 |
| cdr | 获取除头部外的剩余元素 |
| append | 将多个列表合并成一个新的列表 |
| take | 从列表头部获取指定数量的元素 |
| drop | 从列表头部开始删除指定数量的元素后获取剩余部分 |
| sort | 对列表进行排序 |
| member | 简单搜索是否存在 |
| length | 获取列表长度 |
| null? | 列表是否为空 |
| first | 获取列表第一个元素 |
| last | 获取列表最后一个元素 |