
On Tue, Jan 29, 2008 at 05:33:04PM -0500, Brent Yorgey wrote:
On Jan 29, 2008 2:57 PM, Andrea Rossato
wrote: On Tue, Jan 29, 2008 at 08:41:28PM +0100, Andrea Rossato wrote:
Tue Jan 29 20:29:03 CET 2008 Andrea Rossato
* Add a LayoutCombinator class and a CombinedLayout and port PerWorkspace to the new system just to let you know that this will be amended. I'm going to remove the necessity of implementing doFirst (it was needed just to decide which layout description to use)!
Yes, this is a problem with PerWorkspace in particular -- the description method is pure, but the chooser method must be in the X monad to have access to the current stackset, in order to figure out which workspace is current. So in order to get the description method right, the decision of chooser must be cached as part of the data type so that description can show the description for the correct layout. This is what PerWorkspace used to do.
sorry, my previous mail was probably sent too early (I'm tire after a day of type class hacking :)... yes, the fact that we need to implement the "chooser" inside the X monad is a bit ugly. Originally i though it as a pure method, and I changed it because I could not implement PerWorkspace, otherwise. If you can come up with a cleaner solution that would be graet. sorry for the noise.... i'm going to bed now. Andrea