数学集合的lisp表示
2018-01-28 21:34
232 查看
数学上集合的表示:
有理数集
和正实数集
则可以分别表示为
和
lisp 表示:
(set-of x (x in '(1 2 3))) ;==> (1 2 3)
(set-of (cons x y) (x in '(1 2 3)) (y is (* x x))) ;==> ((1 . 1) (2 . 4) (3 . 9))
(define map1
(lambda (f ls)
(set-of (f x) (x in ls))))
(map1 - '(1 2 3 2)) ;==> (-1 -3 -2)
从声明视角转换为计算视角:
(set-of x (x in '(1 2 3 4)) (even? x)) ==>
(let loop ([set '(1 2 3 4)])
(if (null? set)
'()
(let ([x (car set)])
(if (even? x)
(set-cons x (loop (cdr set)))
(loop (cdr set))))))
如何转换:
base是已经计算的部分结果,下一步计算将累加到它。
(set-of e base clause ...)细分为:
(_ e base)
把e加到base
(_ e base (x in s) m ...)
等价于B1并上B2...并上Bk, 其中Bi = (_ e base xi m ...)
(_ e base (x is y) m ...)
y的值绑定到x, 然后(_ e base m ...)
(_ e base p m ...)
如果谓词p计算为真,则(_ e base m ...) 否则当前计算结果不变
第二种情况进一步转换为对base的累加:
(_ e basei m ...), basei是处理xi到xk之后的结果。
lisp代码:
集合的lisp表示
扩展链接:
David A. Plaisted. Constructs for sets, quantifiers, and rewrite rules in Lisp. Technical Report UIUCDCS-R-84-1176, University of Illinois at Urbana-Champaign Department of Computer Science,
June 1984. (ps. 这篇文章没找到,谁能帮我找到,将十分感谢!)
有理数集
和正实数集
则可以分别表示为
和
lisp 表示:
(set-of x (x in '(1 2 3))) ;==> (1 2 3)
(set-of (cons x y) (x in '(1 2 3)) (y is (* x x))) ;==> ((1 . 1) (2 . 4) (3 . 9))
(define map1
(lambda (f ls)
(set-of (f x) (x in ls))))
(map1 - '(1 2 3 2)) ;==> (-1 -3 -2)
从声明视角转换为计算视角:
(set-of x (x in '(1 2 3 4)) (even? x)) ==>
(let loop ([set '(1 2 3 4)])
(if (null? set)
'()
(let ([x (car set)])
(if (even? x)
(set-cons x (loop (cdr set)))
(loop (cdr set))))))
如何转换:
base是已经计算的部分结果,下一步计算将累加到它。
(set-of e base clause ...)细分为:
(_ e base)
把e加到base
(_ e base (x in s) m ...)
等价于B1并上B2...并上Bk, 其中Bi = (_ e base xi m ...)
(_ e base (x is y) m ...)
y的值绑定到x, 然后(_ e base m ...)
(_ e base p m ...)
如果谓词p计算为真,则(_ e base m ...) 否则当前计算结果不变
第二种情况进一步转换为对base的累加:
(_ e basei m ...), basei是处理xi到xk之后的结果。
lisp代码:
集合的lisp表示
扩展链接:
David A. Plaisted. Constructs for sets, quantifiers, and rewrite rules in Lisp. Technical Report UIUCDCS-R-84-1176, University of Illinois at Urbana-Champaign Department of Computer Science,
June 1984. (ps. 这篇文章没找到,谁能帮我找到,将十分感谢!)
相关文章推荐
- 集合 表示数学中的集合的类叫做NSSet
- AI:模式识别的数学表示(集合—函数观点)
- 【数学】[BZOJ 3884] 上帝与集合的正确用法
- SortedDictionary<TKey, TValue> 类 表示根据键进行排序的键/值对的集合。
- URAL - 1964 Chinese Dialects (数学集合)
- 数学符号的读法和英文表示
- (四)深度学习的框架:深度(分层)的数学表示
- 常用数学符号的 LaTeX 表示方法
- 常用技巧——集合的二进制整数表示(挑战程序设计竞赛)
- 离散数学集合部分部分错题分析
- SICP_Python版第二章:集合的表示
- 常用数学符号的 LaTeX 表示方法
- 多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(2)数学表述
- [从头学数学] 第167节 集合与函数概念
- 用 Lisp 语言计算一个集合的所有子集构成的新集合
- 数学公式的描述和表示方法
- 线性表的顺序表 实现,及应用-----西文排序+前m个元素和后n个元素进行整体互换+构造纯集合+有序表求纯集合+循环有序链表表示两集合的并集
- [斐波那契拆分 乱搞 数学] 51Nod 1350 斐波那契表示
- 一些数学知识集合
- java组合和聚合的区别和联系 同时与数学上集合的包含关系之间的联系