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, 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 State. Cheers, - Conal On Thu, May 22, 2008 at 12:52 PM, Krasimir Angelov <[EMAIL PROTECTED]> wrote: > 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: > > http://code.haskell.org/yi/Data/Tree/Zipper.hs > > 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 > acceptable? > > Regards, > Krasimir > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
