相关疑难解决方法(0)

Prolog中的懒惰列表?

是否可以在Prolog中使用惰性列表?类似于以下内容:

ones([1 | Y]) :- ones(Y).
Run Code Online (Sandbox Code Playgroud)

虽然这显然不起作用.

list stream prolog lazy-evaluation lazy-sequences

24
推荐指数
3
解决办法
2647
查看次数

"真正的"纯功能双链表和节点共享

最近我被介绍了这个OCaml代码,它在Haskell中可以写成:

data DL a = DL [a] a [a]

create [] = error "empty list"
create (x:xs) = DL [] x xs

next (DL pr x (h:tl)) = DL (x:pr) h tl
next _ = error "end of dlist"

prev (DL (p:pr) x tl) = DL pr p (x:tl)
prev _ = error "start of dlist"
Run Code Online (Sandbox Code Playgroud)

虽然我不是一个正确的双向链表实现,因为它在遍历上创建了新的存储.OTOH有这个Haskell代码:

data DList a = Leaf | Node { prev::(DList a), elt::a, next::(DList a) }

create = …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming linked-list

9
推荐指数
2
解决办法
768
查看次数