[Haskell-cafe] Data.Tree.Zipper in the standard libraries
conal at conal.net
Thu May 22 18:33:36 EDT 2008
> * Every definition of tp
I meant "of type", forgetting that my emacs abbrevs don't expand in gmail.
On Thu, May 22, 2008 at 2:13 PM, Conal Elliott <conal at conal.net> wrote:
> Hi Krasimir,
> I had a long exchange with chessguy about this interface, suggesting a
> significant change in style, simplifying the type. (Incidentally, the
> change removed the State and hence mtl dependence.)
> The conversation is on http://tunes.org/~nef/logs/haskell/08.05.17<http://tunes.org/%7Enef/logs/haskell/08.05.17>,
> starting with "12:08:11 <chessguy> w00t!" and really picking up with
> "<conal> chessguy: something smells funny ...".
> Here's a summary of the conversation, though I encourage you to read the
> whole thing:
> * Every definition of tp 'State (TreeLoc a) a', does a getLabel at the end
> (except getLabel).
> * Often users of those movement functions discard the result.
> * Simpler and more orthogonal would be remove the getLabel and return
> 'State (TreeLoc a) ()' instead.
> * Now remove that return value altogether, simplifying the type of zipper
> movements to just 'TreeLoc a -> TreeLoc a'. Then they compose nicely with
> (.), having id as identity.
> * Simplify the type of getLabel to just 'TreeLoc a -> a'. Now no more
> Cheers, - Conal
> On Thu, May 22, 2008 at 12:52 PM, Krasimir Angelov <kr.angelov at gmail.com>
>> Hello Guys,
>> We have Data.Tree in the standard libraries for a long time but for
>> some reason we still don't have standard implementation for Zipper. I
>> wrote recently one implementation for Yi but there are many other
>> versions hanging around. At least I know for some. I propose to add
>> one in the standard libraries i.e. the "containers" package. The
>> version that I use currently is here:
>> If you would like to do code review I will be happy to hear comments.
>> After the API is settled down I will write test cases also. One thing
>> that is worying me is that the current version uses State monad which
>> is in the "mtl" package while the natural place for Data.Tree.Zipper
>> is in "containers". This will create an extra dependency. Is this
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe