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 161, Issue 1 (יהושע ולך) 2. Re: Non-exhaustive patterns (Jeffrey Brown) ---------------------------------------------------------------------- Message: 1 Date: Sun, 12 Dec 2021 19:11:25 +0200 From: יהושע ולך <yehoshu...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] Beginners Digest, Vol 161, Issue 1 Message-ID: <CAMcanRW=kiqXPikvRz_v0AAyCpdptSyaxs9=+cd4d6ssf6r...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" http://learnyouahaskell.com/input-and-output might help. On Sun, Dec 12, 2021 at 7:09 PM יהושע ולך <yehoshu...@gmail.com> wrote: > The important thing here, is that print is a function from a "pure" value > (any type implements the Show typeclass. (similar to trait in rust, or > interface in some languages)) > and creates a "IO" value, which can be thought of as a IO action. inside > the IO monad, that just means running it. > > > On Sun, Dec 12, 2021 at 7:05 PM יהושע ולך <yehoshu...@gmail.com> > wrote: > >> Notice: (from ghci) >> >> Prelude GHC.Stack> :t callStack >> callStack :: CallStack >> Prelude GHC.Stack> :t getCallStack >> getCallStack :: CallStack -> [([Char], SrcLoc)] >> Prelude GHC.Stack> :t getCallStack callStack >> getCallStack callStack :: [([Char], SrcLoc)] >> Prelude GHC.Stack> :t length (getCallStack callStack) >> length (getCallStack callStack) :: Int >> >> Prelude GHC.Stack> :t print (length (getCallStack callStack)) >> print (length (getCallStack callStack)) :: IO () >> >> Prelude GHC.Stack> :t print >> print :: Show a => a -> IO () >> >> >> the `print` function takes a pure value, and creates an IO value from it. >> (actually printing is an IO action. the value it prints is not) >> >> >> >> On Sun, Dec 12, 2021 at 5:32 PM Michael Turner < >> michael.eugene.tur...@gmail.com> wrote: >> >>> Regards, >>> Michael Turner >>> Executive Director >>> Project Persephone >>> 1-25-33 Takadanobaba >>> >>> Shinjuku-ku Tokyo 169-0075 >>> Mobile: +81 (90) 5203-8682 >>> tur...@projectpersephone.org >>> >>> Understand - http://www.projectpersephone.org/ >>> Join - http://www.facebook.com/groups/ProjectPersephone/ >>> Donate - http://www.patreon.com/ProjectPersephone >>> Volunteer - https://github.com/ProjectPersephone >>> >>> "Love does not consist in gazing at each other, but in looking outward >>> together in the same direction." -- Antoine de Saint-Exupéry >>> >>> >>> >>> >>> On Sun, Dec 12, 2021 at 8:48 PM <beginners-requ...@haskell.org> wrote: >>> >>> >>> > have another look at >>> > >>> https://hackage.haskell.org/packaggetCallStackgetCallStacke/base-4.16.0.0/docs/GHC-Stack.html#v:callStack >>> > < >>> https://hackage.haskell.org/package/base-4.16.0.0/docs/GHC-Stack.html#v:callStack >>> > >>> >>> I'd been looking at that already, over and over. Still not seeing it. >>> But your proposed fix does work. Thank you. >>> > let l = getCallStack callStack >>> > print (length l) >>> > ``` >>> > the `getCallStack` does not return an "IO" value.. >>> >>> And yet it's it's somehow an IO value in "print (length (getCallStack >>> callStack))"? >>> >>> I just don't get this. >>> >>> > On Sun, Dec 12, 2021, 12:58 Michael Turner < >>> michael.eugene.tur...@gmail.com> >>> > wrote: >>> > >>> > > The following prints 1, as you'd expect: >>> > > ----------------- >>> > > import GHC.Stack >>> > > >>> > > foo :: HasCallStack => IO () >>> > > foo = do >>> > > print (length (getCallStack callStack)) >>> > > >>> > > main = >>> > > foo >>> > > ------------------- >>> > > But when I make it this: >>> > > ... >>> > > l <- getCallStack callStack ; >>> > > print (length l) >>> > > >>> > > I get all this: >>> > > ------------------------------------------ >>> > > ... >>> > > • Couldn't match type ‘[]’ with ‘IO’ >>> > > Expected type: IO ([Char], SrcLoc) >>> > > Actual type: [([Char], SrcLoc)] >>> > > • In a stmt of a 'do' block: l <- getCallStack callStack >>> > > In the expression: >>> > > do l <- getCallStack callStack >>> > > print (length l) >>> > > In an equation for ‘foo’: >>> > > foo >>> > > = do l <- getCallStack callStack >>> > > print (length l) >>> > > | >>> > > 5 | l <- getCallStack callStack ; >>> > > | ^^^^^^^^^^^^^^^^^^^^^^ >>> > > -------------------------------------------- >>> > > >>> > > What am I not seeing? >>> > > >>> > > >>> > > Regards, >>> > > Michael Turner >>> > > Executive Director >>> > > Project Persephone >>> > > 1-25-33 Takadanobaba >>> > > >>> > > Shinjuku-ku Tokyo 169-0075 >>> > > Mobile: +81 (90) 5203-8682 >>> > > tur...@projectpersephone.org >>> > > >>> > > Understand - http://www.projectpersephone.org/ >>> > > Join - http://www.facebook.com/groups/ProjectPersephone/ >>> > > Donate - http://www.patreon.com/ProjectPersephone >>> > > Volunteer - https://github.com/ProjectPersephone >>> > > >>> > > "Love does not consist in gazing at each other, but in looking >>> outward >>> > > together in the same direction." -- Antoine de Saint-Exupéry >>> _______________________________________________ >>> Beginners mailing list >>> Beginners@haskell.org >>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >>> >> >> >> -- >> >> >> > > -- > > > -- -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20211212/9d45c4e9/attachment-0001.html> ------------------------------ Message: 2 Date: Sun, 12 Dec 2021 14:08:49 -0500 From: Jeffrey Brown <jeffbrown....@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] Non-exhaustive patterns Message-ID: <caec4ma1ojmtrrfevmmvpmutxla1wjkg3us7l0qwfd1vjfya...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" The function as written assumes that if the first argument is not zero, then the second argument is nonempty. But if you try to take5 from a list of length 2 that way, you'll eventually be asking for `myTake 3 []`, which there's no way to evaluate. On Sun, Dec 12, 2021 at 12:14 AM Galaxy Being <borg...@gmail.com> wrote: > This code > > myTakePM :: Int -> [a] -> [a] > myTakePM 0 _ = [] > myTakePM n (x:xs) = x : myTakePM (n-1) xs > > is bad because it allows > > myTakePM 4 [1,2,3] > [1,2,3*** Exception: <interactive>:(395,1)-(396,41): Non-exhaustive > patterns in function myTakePM > > I knew it would not work, but why is it calling this essentially a partial > function? How does it know this? Again, I expected an error, but what is > this Non-exhaustive patterns in function myTakePM saying? Or, said > another way, what exactly is non-exhaustive about this? > -- > ⨽ > Lawrence Bottorff > Grand Marais, MN, USA > borg...@gmail.com > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > -- Jeff Brown | Jeffrey Benjamin Brown LinkedIn <https://www.linkedin.com/in/jeffreybenjaminbrown> | Github <https://github.com/jeffreybenjaminbrown> | Twitter <https://twitter.com/carelogic> | Facebook <https://www.facebook.com/mejeff.younotjeff> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20211212/7ff8e5b3/attachment-0001.html> ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 161, Issue 3 *****************************************