Doubly-linked list/Traversal: Difference between revisions

→‎{{header|Haskell}}: shorter name for the loop function, "go" ; add field labels, lastNode etc.
(→‎{{header|Haskell}}: shorter name for the loop function, "go" ; add field labels, lastNode etc.)
Line 590:
<lang haskell>main = print . traverse True $ create [10,20,30,40]
 
data DList a = Leaf | Node { prev::(DList a), elt::a, next::(DList a) }
 
create = workergo Leaf
where workergo _ [] = Leaf
workergo prev (x:xs) = current
where current = Node prev x next
next = workergo current xs
 
isLeaf Leaf = True
isLeaf _ = False
 
lastNode Leaf = Leaf
lastNode dl = until (isLeaf.next) next dl
 
traverse _ Leaf = []
751

edits