<CAMQQO3mLWxjR_cydOdDZR_i6=Mgi3asTWsNDY8tzQcRc95uYtA@mail.gmail.com> <20140302213802.GA17085@machine> <CAMQQO3mRBzzjCCboLPcFKXcQfSuS39BV99zL8+ox=v-Mo+Gdiw@mail.gmail.com> <20140303080645.GB2069@machine> <20140303081048.GC2069@machine> <CAMQQO3kgL+stx9OL0JCn6CmvS4h3Us1-vm9ZDjvMRiuUEQZGGw@mail.gmail.com> <CAMQQO3nAZBV5ZDoVuwKWO+aRP94702CjpWG4DZ8x6+LuwPMPPg@mail.gmail.com> <20140303101441.GA4636@machine> On Mon, 3 Mar 2014 11:14:41 +0100, Daniel Trstenjak <daniel.trstenjak@gmail.com> wrote:
Hi Ă–mer,
I don't think that you need the 'HasWidgets' class, it really doesn't give you a lot. Something like a function 'withFocused' would be a lot more useful:
withFocused :: (Widget -> Widget) -> State Program ()
Greetings, Daniel _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
This looks like a use case for a lens to me.
focused :: Lens' Program Widget over focused :: (Widget -> Widget) -> Program -> Program
(focused %=) :: MonadState Program m => (Widget -> Widget) -> m () zoom focused :: (MonadState Widget m, MonadState Program n) => m a -> n a