- Overview
- Tutorials
- Getting started
- Get started with Canton and the JSON Ledger API
- Get Started with Canton, the JSON Ledger API, and TypeScript
- Get started with Canton Network App Dev Quickstart
- Using the JSON Ledger API
- Get started with smart contract development
- Basic contracts
- Test templates using Daml scripts
- Build the Daml Archive (.dar) file
- Data types
- Transform contracts using choices
- Add constraints to a contract
- Parties and authority
- Compose choices
- Handle exceptions
- Work with dependencies
- Functional programming 101
- The Daml standard library
- Test Daml contracts
- Next steps
- Application development
- Getting started
- Development how-tos
- Component how-tos
- Explanations
- References
- Application development
- Smart contract development
- Daml language cheat sheet
- Daml language reference
- Overview: Template Structure
- Reference: Templates
- Reference: Choices
- Reference: Updates
- Reference: Data Types
- Reference: Built-in Functions
- Reference: Expressions
- Reference: Functions
- Reference: Daml File Structure
- Reference: Daml Packages
- Reference: Contract Keys
- Reference: Interfaces
- Reference: Exceptions (Deprecated)
- Daml standard library
- DA.Action.State.Class
- DA.Action.State
- DA.Action
- DA.Assert
- DA.Bifunctor
- DA.Crypto.Text
- DA.Date
- DA.Either
- DA.Exception
- DA.Fail
- DA.Foldable
- DA.Functor
- DA.Internal.Interface.AnyView.Types
- DA.Internal.Interface.AnyView
- DA.List.BuiltinOrder
- DA.List.Total
- DA.List
- DA.Logic
- DA.Map
- DA.Math
- DA.Monoid
- DA.NonEmpty.Types
- DA.NonEmpty
- DA.Numeric
- DA.Optional
- DA.Record
- DA.Semigroup
- DA.Set
- DA.Stack
- DA.Text
- DA.TextMap
- DA.Time
- DA.Traversable
- DA.Tuple
- DA.Validation
- GHC.Show.Text
- GHC.Tuple.Check
- Prelude
- Daml Script
- Smart contract upgrading reference
- Glossary of concepts
DA.Stack¶
Data Types¶
data SrcLoc
data CallStack
Type of callstacks constructed automatically from
HasCallStackconstraints.Use
callStackto get the current callstack, and usegetCallStackto deconstruct theCallStack.
- 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
HasCallStackconstraint:myFunction : HasCallStack => Int -> Update ()
The function
myFunctionwill still be called the same way, but it will also show up as an entry in the current callstack, which you can obtain withcallStack.Note that only functions with the
HasCallStackconstraint will be added to the current callstack, and if any function does not have theHasCallStackconstraint, 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
: HasCallStack => CallStack
Access to the current
CallStack.