[Haskell-beginners] But I just want a function that returns stack depth!

Michael Turner michael.eugene.turner at gmail.com
Sun Dec 12 10:57:03 UTC 2021


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


More information about the Beginners mailing list