A datatype that is recursive.
Example
data LList = Nil | Node (Int, LList) deriving Show
llist = Node (1, Node (2, Node(3, Nil)))
llistLen :: LList -> Int
llistLen Nil = 0
llistLen (Node (_, rest)) = 1 + llistLen restA datatype that is recursive.
data LList = Nil | Node (Int, LList) deriving Show
llist = Node (1, Node (2, Node(3, Nil)))
llistLen :: LList -> Int
llistLen Nil = 0
llistLen (Node (_, rest)) = 1 + llistLen rest