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
*****************************************

Reply via email to