You are making some very audacious claims about the data structures,
-- rose tree storing data on internal nodes rather than leaves
data AugmentedRoseTree x = ART {node :: x, children :: [AugmentedRoseTree x]}
deriving (Show, Eq, Ord, Functor)
type TNT token = [AugmentedRoseTree token]
type TN = TNT String
You seem to be making these claims on the basis that there is the following serialization of such trees: serialize tn unlines $ concatMap linesOf tn where
linesOf (ART x subtrees) = x : [' ' : line | tree <- subtrees
, line <- linesOf tree]
Arguably there's something missing from these in the form of treating blank lines, but let's take a semantics where the deserializer deletes blank lines...Of course as you're undoubtedly aware, the deserializer for this only gives you a `TN` and to do useful things with this requires a `TNT token` for some more interesting (semantically) token type, your approach is apparently to use the simplest tokenizer,
tokenize :: TN -> TNT [String]
tokenize = map (fmap words)
I guess I just want to point out that while syntax is certainly super important, these data-semantics are not all that novel. In fact they are a subset of s-expressions, assuming parentheses are not used in the lines themselves (and why would they be if `words` is used to parse them?): sexpr :: [AugmentedRoseTree [String]] -> String
sexpr (ART xs subtrees) = "(" ++ unwords (xs ++ map sexpr subtrees) ++ ")"
Note that the subset you're carving out requires the S-expression to only contain bare symbols as its first several elements, with not-bare symbols being the "indented" parts.On the flip-side, S-expressions have certainly changed the world computing-wise... I am just dubious that in reinventing a subset of them with slightly better syntax that you have fundamentally changed computing beyond what they already innovated for you.
But, if you want to start a new smallish programming language and see where it goes, this means that a lot of that way is already cleared out for you; feel free to translate Scheme[1] into your new syntax and you will be able to do some things that you are not even dreaming about yet, like macro expansion.