- 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
- 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
- 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
- Smart contract upgrading reference
- Glossary of concepts
DA.Action¶
Action
Functions¶
- when
: Applicative f => Bool -> f () -> f ()
Conditional execution of
Action
expressions. For example,when final (archive contractId)
will archive the contract
contractId
if the Boolean valuefinal
isTrue
, and otherwise do nothing.This function has short-circuiting semantics, i.e., when both arguments are present and the first arguments evaluates to
False
, the second argument is not evaluated at all.
- unless
: Applicative f => Bool -> f () -> f ()
The reverse of
when
.This function has short-circuiting semantics, i.e., when both arguments are present and the first arguments evaluates to
True
, the second argument is not evaluated at all.
- foldrA
: Action m => (a -> b -> m b) -> b -> [a] -> m b
The
foldrA
is analogous tofoldr
, except that its result is encapsulated in an action. Note thatfoldrA
works from right-to-left over the list arguments.
- foldr1A
: Action m => (a -> a -> m a) -> [a] -> m a
foldr1A
is likefoldrA
but raises an error when presented with an empty list argument.
- foldlA
: Action m => (b -> a -> m b) -> b -> [a] -> m b
foldlA
is analogous tofoldl
, except that its result is encapsulated in an action. Note thatfoldlA
works from left-to-right over the list arguments.
- foldl1A
: Action m => (a -> a -> m a) -> [a] -> m a
The
foldl1A
is likefoldlA
but raises an errors when presented with an empty list argument.
- filterA
: Applicative m => (a -> m Bool) -> [a] -> m [a]
Filters the list using the applicative function: keeps only the elements where the predicate holds. Example: given a collection of Iou contract IDs one can find only the GBPs.
filterA (fmap (\iou -> iou.currency == "GBP") . fetch) iouCids
- replicateA
: Applicative m => Int -> m a -> m [a]
replicateA n act
performs the actionn
times, gathering the results.
- replicateA_
: Applicative m => Int -> m a -> m ()
Like
replicateA
, but discards the result.