[Haskell-beginners] Defined list data type compared to Haskell List
Lawrence Bottorff
borgauf at gmail.com
Tue Jan 26 21:31:22 UTC 2021
I'm following this <https://wiki.haskell.org/99_questions/Solutions/7> and
yet I see this solution
data NestedList a = Elem a | List [NestedList a] deriving (Show)
flatten1 :: NestedList a -> [a]
flatten1 (Elem a ) = [a]
flatten1 (List (x:xs)) = flatten1 x ++ flatten1 (List xs)
flatten1 (List []) = []
What I find puzzling is this line
flatten1 (List (x:xs)) = flatten1 x ++ flatten1 (List xs)
where I see
(List (x:xs)) as an argument. How is the NestedList type also able to be
expressed as a normal consed list with x:xs argument? How is (:)
interacting with NestedList?
LB
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20210126/72b1f9af/attachment.html>
More information about the Beginners
mailing list