DA.Stack

Data Types

data SrcLoc

Location in the source code.

Line and column are 0-based.

SrcLoc

Field

Type

Description

srcLocPackage

Text

srcLocModule

Text

srcLocFile

Text

srcLocStartLine

Int

srcLocStartCol

Int

srcLocEndLine

Int

srcLocEndCol

Int

data CallStack

Type of callstacks constructed automatically from HasCallStack constraints.

Use callStack to get the current callstack, and use getCallStack to deconstruct the CallStack.

type HasCallStack

= IP "callStack" CallStack

Request a CallStack. Use this as a constraint in type signatures in order to get nicer callstacks for error and debug messages.

For example, instead of declaring the following type signature:

myFunction : Int -> Update ()

You can declare a type signature with the HasCallStack constraint:

myFunction : HasCallStack => Int -> Update ()

The function myFunction will still be called the same way, but it will also show up as an entry in the current callstack, which you can obtain with callStack.

Note that only functions with the HasCallStack constraint will be added to the current callstack, and if any function does not have the HasCallStack constraint, the callstack will be reset within that function.

Functions

prettyCallStack

: CallStack -> Text

Pretty-print a CallStack.

getCallStack

: CallStack -> [(Text, SrcLoc)]

Extract the list of call sites from the CallStack.

The most recent call comes first.

callStack

: HasCallStack => CallStack

Access to the current CallStack.