Re:Why it’s hard for programmers to write a program to flatt...
by wz1000 on Friday February 24, 2017 @02:28PM
(#13726845)
Personally, I think this problem shows why sane type systems are useful.
In Haskell
data NestedList a = Single a | Nested [NestedList a]
-- Or equivalently, type NestedList = Free []
flatten :: NestedList a -> [a]
-- This is pretty much the only reasonable definition of flatten the compiler will accept given this type
flatten (Single a) = [a]
flatten (Nested xs) = concatMap flatten xs
-- or given the Free variation of NestedList
-- flatten = retract
In Haskell