[Haskell-cafe] Looking for feedback on my attempt at a tree construction edsl
Yves Parès
limestrael at gmail.com
Tue Mar 22 18:15:54 CET 2011
You could turn 'insertSubTree' into and operator, and shorten "insertLeaf"
createTree = do
"Fruits" +> do
leaf "Apple"
leaf "Mango
"Arbitrary" +> do
leaf "1"
-- and so on...
It's a little bit more concise.
But I fail to see the use of TreeContext being an instance of Monad.
2011/3/22 C K Kashyap <ckkashyap at gmail.com>
> Hi,
> With my "edsl", one can describe a tree like this -
>
> import TreeEdsl
> import Data.Tree
>
> createTree :: TreeContext String ()
> createTree = do
> insertSubTree "Fruits" $ do
> insertLeaf "Apple"
> insertLeaf "Mango"
> insertSubTree "Arbitrary" $ do
> insertSubTree "Numbers" $ do
> insertLeaf "1"
> insertLeaf "2"
> insertLeaf "3"
> insertSubTree "Letters" $ do
> insertLeaf "A"
> insertLeaf "B"
> insertLeaf "C"
> return ()
> main = do
> tree <- process "root" createTree
> putStrLn (drawTree (fmap show tree))
> return ()
>
>
> and get a tree like this -
>
> "root"
> |
> +- "Arbitrary"
> | |
> | +- "Letters"
> | | |
> | | +- "C"
> | | |
> | | +- "B"
> | | |
> | | `- "A"
> | |
> | `- "Numbers"
> | |
> | +- "3"
> | |
> | +- "2"
> | |
> | `- "1"
> |
> `- "Fruits"
> |
> +- "Mango"
> |
> `- "Apple"
>
>
> My code is here
>
> https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/edsl/TreeEdsl.hs
>
> I'd appreciate your feedback on this. Does this qualify to be a edsl?
>
> Regards,
> Kashyap
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110322/5f67e4b6/attachment.htm>
More information about the Haskell-Cafe
mailing list