[Haskell-cafe] Info about List with terminal element

Silvio Frischknecht silvio.frischi at gmail.com
Wed Nov 25 20:47:15 UTC 2015



On 25.11.2015 20:38, David Kraeutmann wrote:
> I'm not quite sure I understand the purpose of this structure. As far
> as I can tell, it's isomorphic to list (even under laziness) with
> some minor differences in performance characteristics (determining
> whether a cons cell is terminal requires evaluating the subsequent
> list to WHNF, whereas in your structure it follows from the
> constructor. But I think that's just a minor performance detail).

I think you misunderstand the structure. It is just a list that has an
element of a type t at the end. It might not terminate.

data List t e = Cons e (List t e) | Null | Terminal t
data List t e = Cons e (List t e) | Null t

are somewhat similar to

([e],Maybe t)
([e],t)

respectively.

but it is guaranteed that all cons of [e] are evaluated before t can be
touched.

Silvio


More information about the Haskell-Cafe mailing list