Tree datastructures: Difference between revisions

Content added Content deleted
(Add nest task "hint" and notes)
m (→‎{{header|Haskell}}: Tidied one function.)
Line 552: Line 552:
import Data.Aeson
import Data.Aeson
import Data.Aeson.Text
import Data.Aeson.Text
import Control.Arrow ((***))


-- TREES <-> LIST OF LEVELS <-> TREES -----------------------
-- TREES <-> LIST OF LEVELS <-> TREES -----------------------
Line 566: Line 567:
let go [] = []
let go [] = []
go ((n, s):xs) =
go ((n, s):xs) =
let (firstTreeLines, rest) = span ((n <) . fst) xs
uncurry (:) $ (Node s . go *** go) (span ((n <) . fst) xs)
in Node s (go firstTreeLines) : go rest
in go pairs
in go pairs