[Haskell-beginners] Beginners Digest, Vol 161, Issue 1
יהושע ולך
yehoshuapw at gmail.com
Sun Dec 12 17:05:22 UTC 2021
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.turner at gmail.com> wrote:
> Regards,
> Michael Turner
> Executive Director
> Project Persephone
> 1-25-33 Takadanobaba
>
> Shinjuku-ku Tokyo 169-0075
> Mobile: +81 (90) 5203-8682
> turner at 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-request at 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.turner at 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
> > > turner at 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 at 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/0768f133/attachment.html>
More information about the Beginners
mailing list