Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module provides types and functions used in the substitution step which is done before type checking and normalization.
Synopsis
- type Substitutions s a = Map Text (Expr s a)
- empty :: Substitutions s a
- substitute :: Expr s a -> Substitutions s a -> Expr s a
Documentation
type Substitutions s a = Map Text (Expr s a) Source #
Substitutions map variables to arbitrary Dhall expressions. Note that we use Dhall.Map.Map as an underlying structure. Hence we respect insertion order.
empty :: Substitutions s a Source #
An empty substitution map.
substitute :: Expr s a -> Substitutions s a -> Expr s a Source #
substitute expr s
replaces all variables in expr
(or its subexpression) with their substitute.
For example, if the substitution map maps the variable Foo
to the text "Foo" all occurrences of Foo
with the text "Foo".
The substitutions will be done in the order they are inserted into the substitution map:
{-# LANGUAGE OverloadedStrings #-} substitute (Dhall.Core.Var "Foo") (Dhall.Map.fromList [("Foo", Dhall.Core.Var "Bar"), ("Bar", Dhall.Core.Var "Baz")])
results in Dhall.Core.Var "Baz"
since we first substitute "Foo" with "Bar" and then the resulting "Bar" with the final "Baz".