# Module 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

Pretty-print a CallStack.

getCallStack

: CallStack -> [(Text, SrcLoc)]

Extract the list of call sites from the CallStack.

The most recent call comes first.

callStack

Access to the current CallStack.