On Nov 30, 2013 12:05 PM, "Roman Cheplyaka" <roma@ro-che.info> wrote:
>
> No. Evaluation of your 'strictify' function will be delayed for the very
> same reason that evaluation of 'f' is delayed in the first place.
>
> It doesn't matter what 'strictify' *does* if it's not even evaluated.

Right, I see. Monad is required for the proper sequencing.

Thanks!

Nicolas

>
> * Nicolas Trangez <nicolas@incubaid.com> [2013-11-30 02:11:02+0100]
> > I'm without a doubt overlooking something, but couldn't this be (otoh)
> >
> >     fmap' :: Functor f => (a -> b) -> f a -> f b
> >     fmap' f = fmap (strictify f)
> >       where
> >         strictify s = (($!) id) . s
> >
> > Nicolas
> > On Nov 30, 2013 12:11 AM, "Edward Kmett" <ekmett@gmail.com> wrote:
> >
> > > Figure out how to write one using either of those APIs, and I'll be quite
> > > impressed. =)
> > >
> > > I personally use this quite often when working in a monad, in lieu of
> > > `return $!` games.
> > >
> > > The argument for implementing a version of it in terms of Monad and not
> > > some new class off to the side of the class hierarchy that Monad doesn't
> > > subclass is that, frankly, if such a thing existed, I'd still have to use
> > > this combinator anyways when working with a transformer stack, etc. and
> > > would derive little benefit.
> > >
> > > -Edward
> > >
> > >
> > > On Fri, Nov 29, 2013 at 12:03 PM, Carter Schonwald <
> > > carter.schonwald@gmail.com> wrote:
> > >
> > >> could someone explain to me why this <$!> would be for monads rather
> > >> being more generally also for functors or applicatives?
> > >>
> > >>
> > >> On Fri, Nov 29, 2013 at 10:35 AM, Johan Tibell <johan.tibell@gmail.com>wrote:
> > >>
> > >>> I'm trying to figure out whether this is a property of the functor
> > >>> itself. I guess it is, but at the same time it seems somewhat orthogonal
> > >>> whether to `seq` some value`.
> > >>>
> > >>>
> > >>> On Fri, Nov 29, 2013 at 3:50 PM, Twan van Laarhoven <twanvl@gmail.com>wrote:
> > >>>
> > >>>> On 29/11/13 12:23, Johan Tibell wrote:
> > >>>>
> > >>>>> On Fri, Nov 29, 2013 at 1:19 PM, Twan van Laarhoven <twanvl@gmail.com
> > >>>>> <mailto:twanvl@gmail.com>> wrote:
> > >>>>>
> > >>>>>     I don't like that this function is implemented for Monads, I think
> > >>>>> that it
> > >>>>>     makes sense for some other functors as well. Though to do this
> > >>>>> 'properly' we
> > >>>>>     would probably end up with another typeclass "StrictFunctor" or
> > >>>>> something,
> > >>>>>     and that is perhaps too much unnecessary complexity.
> > >>>>>
> > >>>>>
> > >>>>> Do you have an example of such a functor?
> > >>>>>
> > >>>>> -- Johan
> > >>>>>
> > >>>>
> > >>>> The first thing that came to mind was ZipList. Perhaps a more realistic
> > >>>> example would be parsing combinator or FRP libraries that are applicative
> > >>>> but not monadic.
> > >>>>
> > >>>>
> > >>>> Twan
> > >>>>
> > >>>
> > >>>
> > >>> _______________________________________________
> > >>> Libraries mailing list
> > >>> Libraries@haskell.org
> > >>> http://www.haskell.org/mailman/listinfo/libraries
> > >>>
> > >>>
> > >>
> > >> _______________________________________________
> > >> Libraries mailing list
> > >> Libraries@haskell.org
> > >> http://www.haskell.org/mailman/listinfo/libraries
> > >>
> > >>
> > >
> > > _______________________________________________
> > > Libraries mailing list
> > > Libraries@haskell.org
> > > http://www.haskell.org/mailman/listinfo/libraries
> > >
> > >
>
> > _______________________________________________
> > Libraries mailing list
> > Libraries@haskell.org
> > http://www.haskell.org/mailman/listinfo/libraries
>