- 论坛徽章:
- 2
|
本帖最后由 OwnWaterloo 于 2012-08-10 00:45 编辑
回复 114# hbmhalley
>> 是一回事,但 while (bool) 写成 f {bool || return ; f(bool)}总是不太漂亮是吧 .. 当然没得选另说。
有些语言里,前者不一定比后者漂亮。。。
- f 边界条件值 = 边界结果
- f 非边界条件值 = 递归定义
- g ... =
- | 边界条件 = 边界结果
- | 非边界条件 = 递归定义
复制代码 >> 不过很好奇,除了那几个专利问题,要是整套平衡树的操作都用函数式的语言完成,会长成什么模样?
这是特指纯函数式吧?
记得有本专门讲这个的书,data structure in functional programming?也许是这个名字,也许是persistent data structure。。。
总之就是将那些经典的数据结构(节点式的)在只能创建新节点,不允许修改已有节点的情况下实现了一遍。
- l1 = [1,2,3]
- l2 = [4,5,6]
- l3 = l1 ++ l2
- l1 -> 1 -> 2 -> 3 -> nil
- l3 -> 1' -> 2' -> 3' -+
- |
- v
- l2 ----------------> 4 -> 5 -> 6 -> nil
复制代码
- // 非真实代码或实现方式了,仅是示意。
- t1 = treeFromList [1,2,3,4]
- t2 = insert 5 t1
- t3 = delete 3 t2
- t1 t2 t3
- | | |
- 2 2' 2''
- / \ / \ / \
- 1 4 1 4' 1 4''
- | / | / \ | \
- | 3 | 3 5' | 5'
- | | | | | | |
- | | | | +-----+---------+
- | +-------+--+ |
- | | |
- +----------+------------+
复制代码 灰常蛋疼。 |
|