[Haskell-cafe] implicit call stacks and calling function

Eric Seidel eric at seidel.io
Mon Mar 7 19:46:55 UTC 2016


On Mon, Mar 7, 2016, at 11:35, Evan Laforge wrote:
> When you do GHC.Stack.getCallStack you get a [(String, SrcPos)].  The
> SrcPos is the position of the calling function, but the String is the
> callee function.  So you can't get the name of the calling function.
> Instead, you get the name of the function with the call stack
> annotation.  That's not so useful because in say a logging function,
> I'm interested in the caller's name.  I don't need the name of the
> logging function, it's just something boring like "info" or "warn"!
> 
> Is there a reason it was done the way it was, or a way to get the name
> of the calling function?

The reason we provide the name of the callee is that the standard format
for a stack trace is callee+pos :)

You point about wanting the caller's name too is well-taken though. In
most languages you can just look at the next item in the stack to grab
the caller, but with HasCallStack there may be no next item... I doubt
it would be hard to add the caller's name too, I'd be happy to look into
it post-ICFP. Would you mind filing a ticket?

Eric


More information about the Haskell-Cafe mailing list