4.1.3求值器数据结构
来源:互联网 发布:js设置fontsize 编辑:程序博客网 时间:2024/06/07 01:15
;4.12,这里的用了一个通用的在框架中寻找变量的过程,不过这个过程不能用在4.13中的make-unbound!里(define (lookup-var-in-frame var vars vals) (cond ((null? vars) false) ((eq? var (car vars)) (cons vars vals)) (else (lookup-var-in-frame var (cdr vars) (cdr vals)))))(define (set-variable-value!-2 var val env) (if (eq? env the-empty-environment) (error "Unbound variable -- SET!" var) (let ((frame (first-frame env))) (let ((result (lookup-var-in-frame var (frame-variables frame) (frame-values frame)))) (if result (set-car! (cdr result) val) (set-variable-value!-2 var val (enclosing-environment env)))))))(define (define-variable! var val env) (let* ((frame (first-frame env)) (result (lookup-var-in-frame var (frame-variables frame) (frame-values frame)))) (if result (set-car! (cdr result) val) (add-binding-to-frame! var val frame))))(define (lookup-variable-value-2 var env) (if (eq? env the-empty-environment) (error "Unbound variable" var) (let ((frame (first-frame env))) (let ((result (lookup-var-in-frame var (frame-variables frame) (frame-values frame)))) (if result (cadr result) (lookup-variable-value-2 var (enclosing-environment env)))))));4.13没有必要删除外围环境中的约束(define (make-unbound! var env) (let* ((frame (first-frame env)) (vars (frame-variables frame)) (vals (frame-values frame))) (define (scan pre-vars pre-vals vars vals) (if (not (null? vars)) (if (eq? var (car vars)) (begin (set-cdr! pre-vars (cdr vars)) (set-cdr! pre-vals (cdr vals))) (scan vars vals (cdr vars) (cdr vals))))) (if (not (null? vars)) (if (eq? var (car vars)) (begin (set-car! frame (cdr vars)) (set-cdr! frame (cdr vals))) (scan vars vals (cdr vars) (cdr vals))))))
0 0
- 4.1.3求值器数据结构
- 数据结构 表达式求值
- 数据结构---表达式求值
- <数据结构>栈-表达式求值
- 数据结构中的表达式求值
- 计算器 表达式求值 数据结构
- 数据结构表达式求值
- 数据结构 表达式求值
- 数据结构_表达式求值
- 【数据结构】 之 表达式求值
- 数据结构---表达式求值
- 【数据结构】中缀表达式求值
- 数据结构课程设计-表达式求值
- 表达式求值(数据结构)
- 表达式求值 ACM 数据结构
- 数据结构课程设计 算术表达式求值
- 数据结构作业—表达式求值
- 数据结构的练习:表达式求值
- C++动态类型转换、强制类型转换、静态类型转换举例分析
- 2016/07/16 《jquery仿新浪微博新版搜索下拉特效》学习笔记一
- int 负数最小值
- 随机数发生器
- Python案例-网络编程-FTP&断点续传&进度条&上传下载
- 4.1.3求值器数据结构
- 爬虫实战:提取人和老鼠中RNA表达性较好的RNA序列
- PHP中使用substr()截取字符串出现中文乱码
- c语言 ascii 和 压缩bcd 码之间的相互转换
- 在scanf里面使用换行符\n是一种什么体验?scanf("%d\n",&a);
- J2EE进阶(六)SSH框架工作流程项目整合实例讲解
- 12. Integer to Roman
- 图像特征提取(类似于综述)
- 集合(Collections)