[Haskell-cafe] Looking for feedback on my attempt at a tree construction edsl
Edward Kmett
ekmett at gmail.com
Tue Mar 22 20:20:25 CET 2011
If you add an instance of IsString to handle leaf construction you can get
it down to
"Fruits" +> do
"Apple"
"Mango"
"Arbitrary" +> do
"1"
"..."
But I also don't see the point of doing this in a monad.
-Edward
On Tue, Mar 22, 2011 at 1:15 PM, Yves Parès <limestrael at gmail.com> wrote:
> 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
>>
>>
>
> _______________________________________________
> 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/b191d0a0/attachment.htm>
More information about the Haskell-Cafe
mailing list