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: Beginners Digest, Vol 100, Issue 7 (Lai Boon Hui) 2. Regarding defining cases exhaustively (Lai Boon Hui) 3. Re: Regarding defining cases exhaustively (Frerich Raabe) ---------------------------------------------------------------------- Message: 1 Date: Sun, 9 Oct 2016 20:32:54 +0800 From: Lai Boon Hui <laibo...@gmail.com> To: beginners@haskell.org Subject: Re: [Haskell-beginners] Beginners Digest, Vol 100, Issue 7 Message-ID: <CAJdQggknW8iHyX7hPY8P0zvk=e6sf9u75dnqvyabqhjjxvr...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Hi Tom, this indeed led to more questions. I believe that was happening because x is not a list of concrete types. In determining the concrete type of the list GHCI evaluated all values hence λ> let foo = [1,2,3] :: [Int] Prelude| foo :: [Int] λ> :sprint foo foo = [1,2,3] I tried on other concrete types like [Char] and String...seems like [Char] is not entire the same as String after all λ> let x = ['a','b','c'] Prelude| x :: [Char] λ> let y = "abc" Prelude| y :: [Char] λ> :sprint x x = "abc" λ> :sprint y y = _ On Sun, Oct 9, 2016 at 8:00 PM, <beginners-requ...@haskell.org> wrote: > 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: Basic sound playing on Windows? (Tilmann) > 2. Re: Basic sound playing on Windows? (Cleverson Casarin Uliana) > 3. Lazy evaluation, trying to find out when its done (Lai Boon Hui) > 4. Re: Lazy evaluation, trying to find out when its done > (Tom Murphy) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sat, 8 Oct 2016 15:19:35 +0200 > From: Tilmann <t_g...@gmx.de> > To: The Haskell-Beginners Mailing List - Discussion of primarily > beginner-level topics related to Haskell <beginners@haskell.org> > Subject: Re: [Haskell-beginners] Basic sound playing on Windows? > Message-ID: <417e430b-14d5-1bda-217d-1df8e5128...@gmx.de> > Content-Type: text/plain; charset=utf-8; format=flowed > > I used ALUT on OSX and it worked perfectly. Not used it on windows yet, > but according to the documentation it's supported. > > > Have a look here for how to use it on windows: > > https://hackage.haskell.org/package/OpenAL > > > and here for some examples: > > https://github.com/haskell-openal/ALUT/tree/master/examples/Basic > > > Best, > > Tilmann > > > > > Am 06.10.16 um 17:17 schrieb Cleverson Casarin Uliana: > > Hello all, is it easy to play/stop sound wave files on Windows? For > > now I'd like just playing and stopping them assynchronously. Do I need > > to install any package besides Haskell Platform? > > > > Thanks, > > Cleverson > > _______________________________________________ > > Beginners mailing list > > Beginners@haskell.org > > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > > > ------------------------------ > > Message: 2 > Date: Sat, 8 Oct 2016 10:54:54 -0300 > From: Cleverson Casarin Uliana <cleve...@gmail.com> > To: The Haskell-Beginners Mailing List - Discussion of primarily > beginner-level topics related to Haskell <beginners@haskell.org> > Subject: Re: [Haskell-beginners] Basic sound playing on Windows? > Message-ID: <46d55c3c-0c5c-e1e1-c413-1406ec12a...@gmail.com> > Content-Type: text/plain; charset=utf-8; format=flowed > > Thank you Tilmann, it's quite good. > > Greetings, > Cleverson > > > ------------------------------ > > Message: 3 > Date: Sun, 9 Oct 2016 10:27:22 +0800 > From: Lai Boon Hui <laibo...@gmail.com> > To: beginners@haskell.org > Subject: [Haskell-beginners] Lazy evaluation, trying to find out when > its done > Message-ID: > <CAJdQggm7L--6Wb6kdqdDiSExEn10_Q8JwWHexVsUN4-LHmB2hw@mail. > gmail.com> > Content-Type: text/plain; charset="utf-8" > > Hi all, > > I understand that the take method will evaluate the value inside the cons > cell whereas length will just evaluate the spine or structure of the list > > λ> let y = "abc" > Prelude| > y :: [Char] > λ> :sprint y > y = _ > λ> take 1 y > "a" > it :: [Char] > λ> :sprint y > y = 'a' : _ > λ> > > Well and good but why doesn't the same work on a list of Nums?? > > λ> let x = [1,2,3] > Prelude| > x :: Num t => [t] > λ> :sprint x > x = _ > λ> take 1 x > [1] > it :: Num a => [a] > λ> :sprint x > x = _ > λ> > > I expected to see x = 1 : _ > > -- > Best Regards, > Boon Hui > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: <http://mail.haskell.org/pipermail/beginners/ > attachments/20161009/7f08152b/attachment-0001.html> > > ------------------------------ > > Message: 4 > Date: Sun, 9 Oct 2016 00:34:31 -0400 > From: Tom Murphy <amin...@gmail.com> > To: The Haskell-Beginners Mailing List - Discussion of primarily > beginner-level topics related to Haskell <beginners@haskell.org> > Subject: Re: [Haskell-beginners] Lazy evaluation, trying to find out > when its done > Message-ID: <20161009043431.gb29...@air.home> > Content-Type: text/plain; charset=utf-8 > > Maybe this will help answer some questions and raise others: > > . let x = [1,2,3] > . take 1 x > [1] > . :sprint x > x = _ > . let x = [1,2,3] :: [Int] > . take 1 x > [1] > . :sprint x > x = [1,2,3] > > Tom > > > On Sun, Oct 09, 2016 at 10:27:22AM +0800, Lai Boon Hui wrote: > > Hi all, > > > > I understand that the take method will evaluate the value inside the cons > > cell whereas length will just evaluate the spine or structure of the list > > > > λ> let y = "abc" > > Prelude| > > y :: [Char] > > λ> :sprint y > > y = _ > > λ> take 1 y > > "a" > > it :: [Char] > > λ> :sprint y > > y = 'a' : _ > > λ> > > > > Well and good but why doesn't the same work on a list of Nums?? > > > > λ> let x = [1,2,3] > > Prelude| > > x :: Num t => [t] > > λ> :sprint x > > x = _ > > λ> take 1 x > > [1] > > it :: Num a => [a] > > λ> :sprint x > > x = _ > > λ> > > > > I expected to see x = 1 : _ > > > > -- > > Best Regards, > > Boon Hui > > > _______________________________________________ > > 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 100, Issue 7 > ***************************************** > -- Best Regards, Boon Hui -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20161009/31a24906/attachment-0001.html> ------------------------------ Message: 2 Date: Mon, 10 Oct 2016 13:15:17 +0800 From: Lai Boon Hui <laibo...@gmail.com> To: "beginners@haskell.org" <beginners@haskell.org> Subject: [Haskell-beginners] Regarding defining cases exhaustively Message-ID: <CAJdQggkE5uDsb_GHPVmeB=v+7LRCOXti+VwsU645ZXbXY=y...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Hi all, I have this code myMaximumBy :: (a -> a -> Ordering) -> [a] -> a myMaximumBy _ [] = undefined myMaximumBy _ (x:[]) = x myMaximumBy f (x:xs) = case f x maxRestOfList of GT -> x _ -> maxRestOfList where maxRestOfList = myMaximumBy f xs whereby the case myMaximumBy _ [] will never happen because case myMaximumBy _ (x:[]) = x prevents that from happening. However i will still like to define it to keep -Wall warning from complaining. Is using undefined acceptable or is there a better way? -- Best Regards, Boon Hui -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20161010/d46a3ed1/attachment-0001.html> ------------------------------ Message: 3 Date: Mon, 10 Oct 2016 08:51:52 +0200 From: Frerich Raabe <ra...@froglogic.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] Regarding defining cases exhaustively Message-ID: <936a30b33b05cd6dfed8f3b11c73f...@roundcube.froglogic.com> Content-Type: text/plain; charset=US-ASCII; format=flowed On 2016-10-10 07:15, Lai Boon Hui wrote: > I have this code > > myMaximumBy :: (a -> a -> Ordering) -> [a] -> a > myMaximumBy _ [] = undefined > myMaximumBy _ (x:[]) = x > myMaximumBy f (x:xs) = > case f x maxRestOfList of > GT -> x > _ -> maxRestOfList > where maxRestOfList = myMaximumBy f xs > > whereby the case myMaximumBy _ [] will never happen because case myMaximumBy > _ (x:[]) = x prevents that from happening. Somebody could call 'myMaximumBy' with an empty list, so as far as the compiler (and fellow programmers) are concerned, this case can certainly happen. > However i will still like to define it to keep -Wall warning from > complaining. > > Is using undefined acceptable or is there a better way? If you're fine with having a partial function (i.e. which is not defined for all possible inputs), then 'undefined' is okay. An alternative might be myMaximumBy _ [] = error "empty list" A nicer approach might be to make 'myMaximumBy' a total function though, i.e. give a plausible definition even for empty lists. So, for instance, you could declare it as myMaximumBy :: (a -> a -> Ordering) -> [a] -> Maybe a such that for empty lists, it yields 'Nothing'. -- Frerich Raabe - ra...@froglogic.com www.froglogic.com - Multi-Platform GUI Testing ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 100, Issue 8 *****************************************