[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