[Haskell-cafe] lens and Maybe value

David Feuer david.feuer at gmail.com
Tue Dec 20 17:43:50 UTC 2022


That's nice and clean, but it leaves a thunk inside (since the field is
lazy). Is there a strict version of `over` that avoids this? We could write
one thus:

over' :: ALens s t a b -> (a -> b) -> s -> t
over' l f = getSolo . cloneLens l (\old -> Solo $! f old)
  where
    getSolo (Solo x) = x

On Tue, Dec 20, 2022, 11:33 AM Tom Ellis <
tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk> wrote:

> On Tue, Dec 20, 2022 at 05:25:35PM +0100, PICCA Frederic-Emmanuel wrote:
> > > Please clarify your question. Your code doesn't compile, and I can't
> tell
> > > what it's supposed to do.
> >
> > replace a (Maybe a) value in a data using lens only if the new (Maybe a)
> is a Just
>
> How about
>
>     over a (mb <|>)
>
> ?
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20221220/bfccb9ac/attachment.html>


More information about the Haskell-Cafe mailing list