Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: applicative instance (Francesco Ariis) 2. Re: applicative instance (sasa bogicevic) 3. Re: applicative instance (Francesco Ariis) 4. Re: applicative instance (sasa bogicevic) ---------------------------------------------------------------------- Message: 1 Date: Fri, 27 Jan 2017 23:21:35 +0100 From: Francesco Ariis <fa...@ariis.it> To: beginners@haskell.org Subject: Re: [Haskell-beginners] applicative instance Message-ID: <20170127222135.ga5...@casa.casa> Content-Type: text/plain; charset=utf-8 On Fri, Jan 27, 2017 at 11:09:07PM +0100, sasa bogicevic wrote: > What is wrong with my applicative instance for custom List type ? > > http://lpaste.net/351723 > > [..] You have implemented <*> on a list in one of the many possible (and sensible) ways. In regular Haskell it's a ZipList λ> :m Control.Applicative λ> ZipList [(+1), (*2)] <*> ZipList [1,2] ZipList {getZipList = [2,4]} (and there's nothing wrong with that) ------------------------------ Message: 2 Date: Sat, 28 Jan 2017 10:09:10 +0100 From: sasa bogicevic <brutalles...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] applicative instance Message-ID: <ac822d30-0fc2-4c60-932e-e47759d1f...@gmail.com> Content-Type: text/plain; charset=utf-8 Ok so how would the implementation look to get the correct result ? I can't seem to write something that will compile except ZipList version. Thanks, Sasa > On Jan 27, 2017, at 23:21, Francesco Ariis <fa...@ariis.it> wrote: > > On Fri, Jan 27, 2017 at 11:09:07PM +0100, sasa bogicevic wrote: >> What is wrong with my applicative instance for custom List type ? >> >> http://lpaste.net/351723 >> >> [..] > > You have implemented <*> on a list in one of the many possible > (and sensible) ways. In regular Haskell it's a ZipList > > λ> :m Control.Applicative > λ> ZipList [(+1), (*2)] <*> ZipList [1,2] > ZipList {getZipList = [2,4]} > > (and there's nothing wrong with that) > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ Message: 3 Date: Sat, 28 Jan 2017 10:43:45 +0100 From: Francesco Ariis <fa...@ariis.it> To: beginners@haskell.org Subject: Re: [Haskell-beginners] applicative instance Message-ID: <20170128094345.ga2...@casa.casa> Content-Type: text/plain; charset=us-ascii On Sat, Jan 28, 2017 at 10:09:10AM +0100, sasa bogicevic wrote: > Ok so how would the implementation look to get the correct result ? > I can't seem to write something that will compile except ZipList version. One way is by implementing your own (++): data List a = Nil | Cons a (List a) deriving (Eq, Show) plusPlus :: List a -> List a -> List a plusPlus Nil bs = bs plusPlus (Cons a as) bs = Cons a (as `plusPlus` bs) instance Functor List where fmap f Nil = Nil fmap f (Cons a b) = Cons (f a) (fmap f b) instance Applicative List where pure x = Cons x Nil Nil <*> _ = Nil _ <*> Nil = Nil (Cons x xy) <*> ys = (fmap x ys) `plusPlus` (xy <*> ys) ------------------------------ Message: 4 Date: Sat, 28 Jan 2017 10:53:07 +0100 From: sasa bogicevic <brutalles...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] applicative instance Message-ID: <432542c4-01e7-4e22-a563-7068906c4...@gmail.com> Content-Type: text/plain; charset=us-ascii Yep that worked, thanks. Is there a way to do it without defining a separate function like plusPlus ? > On Jan 28, 2017, at 10:43, Francesco Ariis <fa...@ariis.it> wrote: > > On Sat, Jan 28, 2017 at 10:09:10AM +0100, sasa bogicevic wrote: >> Ok so how would the implementation look to get the correct result ? >> I can't seem to write something that will compile except ZipList version. > > One way is by implementing your own (++): > > data List a = Nil | Cons a (List a) deriving (Eq, Show) > > plusPlus :: List a -> List a -> List a > plusPlus Nil bs = bs > plusPlus (Cons a as) bs = Cons a (as `plusPlus` bs) > > instance Functor List where > fmap f Nil = Nil > fmap f (Cons a b) = Cons (f a) (fmap f b) > > instance Applicative List where > pure x = Cons x Nil > Nil <*> _ = Nil > _ <*> Nil = Nil > (Cons x xy) <*> ys = (fmap x ys) `plusPlus` (xy <*> ys) > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 103, Issue 24 ******************************************