dhall-1.30.0: A configuration language guaranteed to terminate

Safe HaskellNone



This module provides types and functions used in the substitution step which is done before type checking and normalization.



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".