Hi,<div>With my "edsl", one can describe a tree like this -</div><div><br></div><div>import TreeEdsl</div><div>import Data.Tree</div><div><br></div><div>createTree :: TreeContext String ()</div><div>createTree = do</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>insertSubTree "Fruits" $ do</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>insertLeaf "Apple"</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>insertLeaf "Mango"</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>insertSubTree "Arbitrary" $ do</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>insertSubTree "Numbers" $ do</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>insertLeaf "1"</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>insertLeaf "2"</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>insertLeaf "3"</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>insertSubTree "Letters" $ do</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>insertLeaf "A"</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>insertLeaf "B"</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>insertLeaf "C"</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return ()</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div>main = do</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>tree <- process "root" createTree</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>putStrLn (drawTree (fmap show tree))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>return ()</div><div><br></div><div><br></div><div>and get a tree like this - </div><div><meta charset="utf-8"><div><br></div><div>"root"</div><div>
|</div><div>+- "Arbitrary"</div><div>| |</div><div>| +- "Letters"</div><div>| | |</div><div>| | +- "C"</div><div>| | |</div><div>| | +- "B"</div><div>| | |</div><div>| | `- "A"</div>
<div>| |</div><div>| `- "Numbers"</div><div>| |</div><div>| +- "3"</div><div>| |</div><div>| +- "2"</div><div>| |</div><div>| `- "1"</div><div>|</div><div>
`- "Fruits"</div><div> |</div><div> +- "Mango"</div><div> |</div><div> `- "Apple"</div></div><div><br></div><div> </div><div><div>My code is here </div><div><a href="https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/edsl/TreeEdsl.hs">https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/edsl/TreeEdsl.hs</a></div>
</div><div><br></div><div>I'd appreciate your feedback on this. Does this qualify to be a edsl?</div><div><br></div><div>Regards,</div><div>Kashyap</div>