dhall 1.20.1 → 1.21.0
raw patch · 1591 files changed
+5477/−5380 lines, 1591 filesdep ~QuickCheckbinary-addedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: QuickCheck
API changes (from Hackage documentation)
Files
- CHANGELOG.md +102/−0
- Prelude/Monoid +0/−1
- Prelude/package.dhall +0/−1
- benchmark/parser/Main.hs +1/−1
- dhall-lang/Prelude/Bool/and +18/−0
- dhall-lang/Prelude/Bool/build +17/−0
- dhall-lang/Prelude/Bool/even +22/−0
- dhall-lang/Prelude/Bool/fold +20/−0
- dhall-lang/Prelude/Bool/not +12/−0
- dhall-lang/Prelude/Bool/odd +22/−0
- dhall-lang/Prelude/Bool/or +18/−0
- dhall-lang/Prelude/Bool/package.dhall +17/−0
- dhall-lang/Prelude/Bool/show +13/−0
- dhall-lang/Prelude/Double/package.dhall +1/−0
- dhall-lang/Prelude/Double/show +13/−0
- dhall-lang/Prelude/Function/compose +21/−0
- dhall-lang/Prelude/Function/package.dhall +1/−0
- dhall-lang/Prelude/Integer/package.dhall +1/−0
- dhall-lang/Prelude/Integer/show +14/−0
- dhall-lang/Prelude/Integer/toDouble +12/−0
- dhall-lang/Prelude/JSON/Nesting +32/−0
- dhall-lang/Prelude/JSON/Tagged +69/−0
- dhall-lang/Prelude/JSON/keyText +17/−0
- dhall-lang/Prelude/JSON/keyValue +20/−0
- dhall-lang/Prelude/JSON/package.dhall +1/−0
- dhall-lang/Prelude/List/all +20/−0
- dhall-lang/Prelude/List/any +20/−0
- dhall-lang/Prelude/List/build +32/−0
- dhall-lang/Prelude/List/concat +42/−0
- dhall-lang/Prelude/List/concatMap +28/−0
- dhall-lang/Prelude/List/filter +30/−0
- dhall-lang/Prelude/List/fold +46/−0
- dhall-lang/Prelude/List/generate +38/−0
- dhall-lang/Prelude/List/head +12/−0
- dhall-lang/Prelude/List/indexed +21/−0
- dhall-lang/Prelude/List/iterate +43/−0
- dhall-lang/Prelude/List/last +12/−0
- dhall-lang/Prelude/List/length +12/−0
- dhall-lang/Prelude/List/map +27/−0
- dhall-lang/Prelude/List/null +16/−0
- dhall-lang/Prelude/List/package.dhall +39/−0
- dhall-lang/Prelude/List/replicate +24/−0
- dhall-lang/Prelude/List/reverse +12/−0
- dhall-lang/Prelude/List/shifted +90/−0
- dhall-lang/Prelude/List/unzip +55/−0
- dhall-lang/Prelude/Monoid +39/−0
- dhall-lang/Prelude/Natural/build +33/−0
- dhall-lang/Prelude/Natural/enumerate +36/−0
- dhall-lang/Prelude/Natural/even +12/−0
- dhall-lang/Prelude/Natural/fold +33/−0
- dhall-lang/Prelude/Natural/isZero +12/−0
- dhall-lang/Prelude/Natural/odd +12/−0
- dhall-lang/Prelude/Natural/package.dhall +23/−0
- dhall-lang/Prelude/Natural/product +22/−0
- dhall-lang/Prelude/Natural/show +13/−0
- dhall-lang/Prelude/Natural/sum +22/−0
- dhall-lang/Prelude/Natural/toDouble +16/−0
- dhall-lang/Prelude/Natural/toInteger +12/−0
- dhall-lang/Prelude/Optional/all +20/−0
- dhall-lang/Prelude/Optional/any +20/−0
- dhall-lang/Prelude/Optional/build +36/−0
- dhall-lang/Prelude/Optional/concat +28/−0
- dhall-lang/Prelude/Optional/filter +32/−0
- dhall-lang/Prelude/Optional/fold +21/−0
- dhall-lang/Prelude/Optional/head +28/−0
- dhall-lang/Prelude/Optional/last +28/−0
- dhall-lang/Prelude/Optional/length +18/−0
- dhall-lang/Prelude/Optional/map +20/−0
- dhall-lang/Prelude/Optional/null +18/−0
- dhall-lang/Prelude/Optional/package.dhall +27/−0
- dhall-lang/Prelude/Optional/toList +18/−0
- dhall-lang/Prelude/Optional/unzip +38/−0
- dhall-lang/Prelude/Text/concat +17/−0
- dhall-lang/Prelude/Text/concatMap +21/−0
- dhall-lang/Prelude/Text/concatMapSep +47/−0
- dhall-lang/Prelude/Text/concatSep +44/−0
- dhall-lang/Prelude/Text/package.dhall +11/−0
- dhall-lang/Prelude/Text/show +13/−0
- dhall-lang/Prelude/package.dhall +19/−0
- dhall-lang/tests/import/data/fieldOrder/1.dhall +1/−0
- dhall-lang/tests/import/data/fieldOrder/2.dhall +1/−0
- dhall-lang/tests/import/failure/alternativeEnv.dhall +1/−0
- dhall-lang/tests/import/failure/alternativeEnvMissing.dhall +1/−0
- dhall-lang/tests/import/failure/cycle.dhall +1/−0
- dhall-lang/tests/import/failure/missing.dhall +1/−0
- dhall-lang/tests/import/failure/referentiallyInsane.dhall +13/−0
- dhall-lang/tests/import/success/alternativeEnvNaturalA.dhall +1/−0
- dhall-lang/tests/import/success/alternativeEnvNaturalB.dhall +1/−0
- dhall-lang/tests/import/success/alternativeEnvSimpleA.dhall +1/−0
- dhall-lang/tests/import/success/alternativeEnvSimpleB.dhall +1/−0
- dhall-lang/tests/import/success/alternativeNaturalA.dhall +1/−0
- dhall-lang/tests/import/success/alternativeNaturalB.dhall +1/−0
- dhall-lang/tests/import/success/asTextA.dhall +1/−0
- dhall-lang/tests/import/success/asTextB.dhall +3/−0
- dhall-lang/tests/import/success/fieldOrderA.dhall +5/−0
- dhall-lang/tests/import/success/fieldOrderB.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/access/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/access/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/access/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/access/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/combineTypes/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/combineTypes/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/combineTypes/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/combineTypes/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/prefer/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/prefer/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/projection/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/haskell-tutorial/projection/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/escapeA.dhall +9/−0
- dhall-lang/tests/normalization/success/multiline/escapeB.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/hangingIndentA.dhall +15/−0
- dhall-lang/tests/normalization/success/multiline/hangingIndentB.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/interestingA.dhall +7/−0
- dhall-lang/tests/normalization/success/multiline/interestingB.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/interiorIndentA.dhall +16/−0
- dhall-lang/tests/normalization/success/multiline/interiorIndentB.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/interpolationA.dhall +9/−0
- dhall-lang/tests/normalization/success/multiline/interpolationB.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/preserveCommentA.dhall +8/−0
- dhall-lang/tests/normalization/success/multiline/preserveCommentB.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/singleLineA.dhall +6/−0
- dhall-lang/tests/normalization/success/multiline/singleLineB.dhall +1/−0
- dhall-lang/tests/normalization/success/multiline/twoLinesA.dhall +7/−0
- dhall-lang/tests/normalization/success/multiline/twoLinesB.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/and/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/and/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/and/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/and/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/build/0A.dhall +2/−0
- dhall-lang/tests/normalization/success/prelude/Bool/build/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/build/1A.dhall +2/−0
- dhall-lang/tests/normalization/success/prelude/Bool/build/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/2A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/2B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/3A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/even/3B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/fold/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/fold/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/fold/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/fold/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/not/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/not/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/not/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/not/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/2A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/2B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/3A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/odd/3B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/or/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/or/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/or/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/or/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/show/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/show/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/show/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Bool/show/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Double/show/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Double/show/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Double/show/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Double/show/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/show/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/show/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/show/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/show/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/toDouble/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/toDouble/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/toDouble/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Integer/toDouble/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/all/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/all/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/all/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/all/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/any/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/any/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/any/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/any/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/build/0A.dhall +7/−0
- dhall-lang/tests/normalization/success/prelude/List/build/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/build/1A.dhall +7/−0
- dhall-lang/tests/normalization/success/prelude/List/build/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/concat/0A.dhall +5/−0
- dhall-lang/tests/normalization/success/prelude/List/concat/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/concat/1A.dhall +5/−0
- dhall-lang/tests/normalization/success/prelude/List/concat/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/concatMap/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/concatMap/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/concatMap/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/concatMap/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/filter/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/filter/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/filter/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/filter/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/fold/0A.dhall +6/−0
- dhall-lang/tests/normalization/success/prelude/List/fold/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/fold/1A.dhall +7/−0
- dhall-lang/tests/normalization/success/prelude/List/fold/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/fold/2A.dhall +4/−0
- dhall-lang/tests/normalization/success/prelude/List/fold/2B.dhall +4/−0
- dhall-lang/tests/normalization/success/prelude/List/generate/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/generate/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/generate/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/generate/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/head/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/head/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/head/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/head/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/indexed/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/indexed/0B.dhall +4/−0
- dhall-lang/tests/normalization/success/prelude/List/indexed/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/indexed/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/iterate/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/iterate/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/iterate/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/iterate/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/last/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/last/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/last/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/last/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/length/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/length/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/length/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/length/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/map/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/map/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/map/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/map/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/null/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/null/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/null/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/null/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/replicate/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/replicate/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/replicate/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/replicate/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/reverse/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/reverse/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/reverse/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/reverse/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/shifted/0A.dhall +15/−0
- dhall-lang/tests/normalization/success/prelude/List/shifted/0B.dhall +10/−0
- dhall-lang/tests/normalization/success/prelude/List/shifted/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/shifted/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/unzip/0A.dhall +7/−0
- dhall-lang/tests/normalization/success/prelude/List/unzip/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/unzip/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/List/unzip/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/build/0A.dhall +6/−0
- dhall-lang/tests/normalization/success/prelude/Natural/build/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/build/1A.dhall +6/−0
- dhall-lang/tests/normalization/success/prelude/Natural/build/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/enumerate/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/enumerate/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/enumerate/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/enumerate/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/even/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/even/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/even/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/even/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/fold/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/fold/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/fold/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/fold/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/fold/2A.dhall +4/−0
- dhall-lang/tests/normalization/success/prelude/Natural/fold/2B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/isZero/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/isZero/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/isZero/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/isZero/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/odd/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/odd/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/odd/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/odd/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/product/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/product/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/product/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/product/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/show/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/show/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/show/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/show/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/sum/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/sum/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/sum/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/sum/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toDouble/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toDouble/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toDouble/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toDouble/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toInteger/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toInteger/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toInteger/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Natural/toInteger/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/all/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/all/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/all/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/all/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/any/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/any/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/any/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/any/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/build/0A.dhall +7/−0
- dhall-lang/tests/normalization/success/prelude/Optional/build/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/build/1A.dhall +7/−0
- dhall-lang/tests/normalization/success/prelude/Optional/build/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/concat/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/concat/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/concat/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/concat/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/concat/2A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/concat/2B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/filter/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/filter/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/filter/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/filter/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/fold/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/fold/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/fold/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/fold/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/head/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/head/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/head/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/head/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/head/2A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/head/2B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/last/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/last/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/last/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/last/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/last/2A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/last/2B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/length/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/length/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/length/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/length/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/map/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/map/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/map/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/map/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/null/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/null/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/null/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/null/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/toList/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/toList/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/toList/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/toList/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/unzip/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/unzip/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/unzip/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Optional/unzip/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concat/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concat/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concat/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concat/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMap/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMap/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMap/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMap/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMapSep/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMapSep/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMapSep/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatMapSep/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatSep/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatSep/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatSep/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/concatSep/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/show/0A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/show/0B.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/show/1A.dhall +1/−0
- dhall-lang/tests/normalization/success/prelude/Text/show/1B.dhall +1/−0
- dhall-lang/tests/normalization/success/remoteSystemsA.dhall +52/−0
- dhall-lang/tests/normalization/success/remoteSystemsB.dhall +212/−0
- dhall-lang/tests/normalization/success/simple/doubleShowA.dhall +6/−0
- dhall-lang/tests/normalization/success/simple/doubleShowB.dhall +6/−0
- dhall-lang/tests/normalization/success/simple/integerShowA.dhall +4/−0
- dhall-lang/tests/normalization/success/simple/integerShowB.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/integerToDoubleA.dhall +10/−0
- dhall-lang/tests/normalization/success/simple/integerToDoubleB.dhall +9/−0
- dhall-lang/tests/normalization/success/simple/letletA.dhall +3/−0
- dhall-lang/tests/normalization/success/simple/letletB.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/listBuildA.dhall +22/−0
- dhall-lang/tests/normalization/success/simple/listBuildB.dhall +7/−0
- dhall-lang/tests/normalization/success/simple/multiLineA.dhall +4/−0
- dhall-lang/tests/normalization/success/simple/multiLineB.dhall +4/−0
- dhall-lang/tests/normalization/success/simple/naturalBuildA.dhall +18/−0
- dhall-lang/tests/normalization/success/simple/naturalBuildB.dhall +7/−0
- dhall-lang/tests/normalization/success/simple/naturalPlusA.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/naturalPlusB.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/naturalShowA.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/naturalShowB.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/naturalToIntegerA.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/naturalToIntegerB.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/optionalBuildA.dhall +32/−0
- dhall-lang/tests/normalization/success/simple/optionalBuildB.dhall +9/−0
- dhall-lang/tests/normalization/success/simple/optionalBuildFoldA.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/optionalBuildFoldB.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/optionalFoldA.dhall +7/−0
- dhall-lang/tests/normalization/success/simple/optionalFoldB.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/sortOperatorA.dhall +1/−0
- dhall-lang/tests/normalization/success/simple/sortOperatorB.dhall +1/−0
- dhall-lang/tests/normalization/success/simplifications/andA.dhall +6/−0
- dhall-lang/tests/normalization/success/simplifications/andB.dhall +6/−0
- dhall-lang/tests/normalization/success/simplifications/eqA.dhall +4/−0
- dhall-lang/tests/normalization/success/simplifications/eqB.dhall +4/−0
- dhall-lang/tests/normalization/success/simplifications/ifThenElseA.dhall +3/−0
- dhall-lang/tests/normalization/success/simplifications/ifThenElseB.dhall +3/−0
- dhall-lang/tests/normalization/success/simplifications/neA.dhall +4/−0
- dhall-lang/tests/normalization/success/simplifications/neB.dhall +4/−0
- dhall-lang/tests/normalization/success/simplifications/orA.dhall +6/−0
- dhall-lang/tests/normalization/success/simplifications/orB.dhall +6/−0
- dhall-lang/tests/parser/failure/annotation.dhall +1/−0
- dhall-lang/tests/parser/failure/doubleBoundsNeg.dhall +1/−0
- dhall-lang/tests/parser/failure/doubleBoundsPos.dhall +1/−0
- dhall-lang/tests/parser/failure/importAccess.dhall +1/−0
- dhall-lang/tests/parser/failure/incompleteIf.dhall +10/−0
- dhall-lang/tests/parser/failure/mandatoryNewline.dhall +2/−0
- dhall-lang/tests/parser/failure/missingSpace.dhall +2/−0
- dhall-lang/tests/parser/failure/spaceAfterListAppend.dhall +2/−0
- dhall-lang/tests/parser/success/annotationsA.dhall +4/−0
- dhall-lang/tests/parser/success/annotationsB.dhallb binary
- dhall-lang/tests/parser/success/asTextA.dhall +1/−0
- dhall-lang/tests/parser/success/asTextB.dhallb +1/−0
- dhall-lang/tests/parser/success/blockCommentA.dhall +3/−0
- dhall-lang/tests/parser/success/blockCommentB.dhallb +1/−0
- dhall-lang/tests/parser/success/builtinsA.dhall +31/−0
- dhall-lang/tests/parser/success/builtinsB.dhallb binary
- dhall-lang/tests/parser/success/collectionImportTypeA.dhall +3/−0
- dhall-lang/tests/parser/success/collectionImportTypeB.dhallb binary
- dhall-lang/tests/parser/success/doubleA.dhall +1/−0
- dhall-lang/tests/parser/success/doubleB.dhallb binary
- dhall-lang/tests/parser/success/doubleQuotedStringA.dhall +1/−0
- dhall-lang/tests/parser/success/doubleQuotedStringB.dhallb +1/−0
- dhall-lang/tests/parser/success/environmentVariablesA.dhall +5/−0
- dhall-lang/tests/parser/success/environmentVariablesB.dhallb binary
- dhall-lang/tests/parser/success/escapedDoubleQuotedStringA.dhall +1/−0
- dhall-lang/tests/parser/success/escapedDoubleQuotedStringB.dhallb +2/−0
- dhall-lang/tests/parser/success/escapedSingleQuotedStringA.dhall +4/−0
- dhall-lang/tests/parser/success/escapedSingleQuotedStringB.dhallb +2/−0
- dhall-lang/tests/parser/success/fieldsA.dhall +1/−0
- dhall-lang/tests/parser/success/fieldsB.dhallb +1/−0
- dhall-lang/tests/parser/success/forallA.dhall +1/−0
- dhall-lang/tests/parser/success/forallB.dhallb +1/−0
- dhall-lang/tests/parser/success/functionTypeA.dhall +1/−0
- dhall-lang/tests/parser/success/functionTypeB.dhallb +1/−0
- dhall-lang/tests/parser/success/identifierA.dhall +1/−0
- dhall-lang/tests/parser/success/identifierB.dhallb +1/−0
- dhall-lang/tests/parser/success/ifThenElseA.dhall +1/−0
- dhall-lang/tests/parser/success/ifThenElseB.dhallb +1/−0
- dhall-lang/tests/parser/success/importAltA.dhall +1/−0
- dhall-lang/tests/parser/success/importAltB.dhallb binary
- dhall-lang/tests/parser/success/interpolatedDoubleQuotedStringA.dhall +1/−0
- dhall-lang/tests/parser/success/interpolatedDoubleQuotedStringB.dhallb binary
- dhall-lang/tests/parser/success/interpolatedSingleQuotedStringA.dhall +4/−0
- dhall-lang/tests/parser/success/interpolatedSingleQuotedStringB.dhallb binary
- dhall-lang/tests/parser/success/labelA.dhall +2/−0
- dhall-lang/tests/parser/success/labelB.dhallb +1/−0
- dhall-lang/tests/parser/success/lambdaA.dhall +1/−0
- dhall-lang/tests/parser/success/lambdaB.dhallb +1/−0
- dhall-lang/tests/parser/success/largeExpressionA.dhall +254/−0
- dhall-lang/tests/parser/success/largeExpressionB.dhallb binary
- dhall-lang/tests/parser/success/letA.dhall +3/−0
- dhall-lang/tests/parser/success/letB.dhallb +1/−0
- dhall-lang/tests/parser/success/lineCommentA.dhall +3/−0
- dhall-lang/tests/parser/success/lineCommentB.dhallb +1/−0
- dhall-lang/tests/parser/success/listA.dhall +4/−0
- dhall-lang/tests/parser/success/listB.dhallb binary
- dhall-lang/tests/parser/success/mergeA.dhall +7/−0
- dhall-lang/tests/parser/success/mergeB.dhallb +1/−0
- dhall-lang/tests/parser/success/multiletA.dhall +3/−0
- dhall-lang/tests/parser/success/multiletB.dhallb +1/−0
- dhall-lang/tests/parser/success/naturalA.dhall +1/−0
- dhall-lang/tests/parser/success/naturalB.dhallb binary
- dhall-lang/tests/parser/success/nestedBlockCommentA.dhall +3/−0
- dhall-lang/tests/parser/success/nestedBlockCommentB.dhallb +1/−0
- dhall-lang/tests/parser/success/operatorsA.dhall +2/−0
- dhall-lang/tests/parser/success/operatorsB.dhallb binary
- dhall-lang/tests/parser/success/parenthesizeUsingA.dhall +1/−0
- dhall-lang/tests/parser/success/parenthesizeUsingB.dhallb binary
- dhall-lang/tests/parser/success/pathTerminationA.dhall +3/−0
- dhall-lang/tests/parser/success/pathTerminationB.dhallb binary
- dhall-lang/tests/parser/success/pathsA.dhall +5/−0
- dhall-lang/tests/parser/success/pathsB.dhallb binary
- dhall-lang/tests/parser/success/quotedLabelA.dhall +4/−0
- dhall-lang/tests/parser/success/quotedLabelB.dhallb +1/−0
- dhall-lang/tests/parser/success/quotedPathsA.dhall +3/−0
- dhall-lang/tests/parser/success/quotedPathsB.dhallb binary
- dhall-lang/tests/parser/success/recordA.dhall +4/−0
- dhall-lang/tests/parser/success/recordB.dhallb +1/−0
- dhall-lang/tests/parser/success/reservedPrefixA.dhall +1/−0
- dhall-lang/tests/parser/success/reservedPrefixB.dhallb +1/−0
- dhall-lang/tests/parser/success/singleQuotedStringA.dhall +4/−0
- dhall-lang/tests/parser/success/singleQuotedStringB.dhallb +2/−0
- dhall-lang/tests/parser/success/sortA.dhall +1/−0
- dhall-lang/tests/parser/success/sortB.dhallb +1/−0
- dhall-lang/tests/parser/success/templateA.dhall +13/−0
- dhall-lang/tests/parser/success/templateB.dhallb binary
- dhall-lang/tests/parser/success/unicodeCommentA.dhall +3/−0
- dhall-lang/tests/parser/success/unicodeCommentB.dhallb +1/−0
- dhall-lang/tests/parser/success/unicodeDoubleQuotedStringA.dhall +1/−0
- dhall-lang/tests/parser/success/unicodeDoubleQuotedStringB.dhallb +1/−0
- dhall-lang/tests/parser/success/unicodePathsA.dhall +1/−0
- dhall-lang/tests/parser/success/unicodePathsB.dhallb binary
- dhall-lang/tests/parser/success/unionA.dhall +4/−0
- dhall-lang/tests/parser/success/unionB.dhallb +1/−0
- dhall-lang/tests/parser/success/urlsA.dhall +12/−0
- dhall-lang/tests/parser/success/urlsB.dhallb binary
- dhall-lang/tests/parser/success/whitespaceA.dhall +3/−0
- dhall-lang/tests/parser/success/whitespaceB.dhallb +1/−0
- dhall-lang/tests/parser/success/whitespaceBuffetA.dhall +9/−0
- dhall-lang/tests/parser/success/whitespaceBuffetB.dhallb binary
- dhall-lang/tests/typecheck/failure/combineMixedRecords.dhall +1/−0
- dhall-lang/tests/typecheck/failure/duplicateFields.dhall +1/−0
- dhall-lang/tests/typecheck/failure/hurkensParadox.dhall +49/−0
- dhall-lang/tests/typecheck/failure/mixedUnions.dhall +1/−0
- dhall-lang/tests/typecheck/failure/preferMixedRecords.dhall +1/−0
- dhall-lang/tests/typecheck/success/accessEncodedTypeA.dhall +4/−0
- dhall-lang/tests/typecheck/success/accessEncodedTypeB.dhall +4/−0
- dhall-lang/tests/typecheck/success/accessTypeA.dhall +1/−0
- dhall-lang/tests/typecheck/success/accessTypeB.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/and/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/and/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/and/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/and/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/build/0A.dhall +2/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/build/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/build/1A.dhall +2/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/build/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/2A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/2B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/3A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/even/3B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/fold/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/fold/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/fold/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/fold/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/not/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/not/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/not/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/not/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/2A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/2B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/3A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/odd/3B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/or/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/or/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/or/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/or/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/show/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/show/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/show/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Bool/show/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Double/show/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Double/show/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Double/show/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Double/show/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/show/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/show/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/show/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/show/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/toDouble/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/toDouble/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/toDouble/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Integer/toDouble/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/all/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/all/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/all/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/all/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/any/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/any/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/any/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/any/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/build/0A.dhall +7/−0
- dhall-lang/tests/typecheck/success/prelude/List/build/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/build/1A.dhall +7/−0
- dhall-lang/tests/typecheck/success/prelude/List/build/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/concat/0A.dhall +5/−0
- dhall-lang/tests/typecheck/success/prelude/List/concat/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/concat/1A.dhall +5/−0
- dhall-lang/tests/typecheck/success/prelude/List/concat/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/concatMap/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/concatMap/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/concatMap/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/concatMap/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/filter/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/filter/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/filter/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/filter/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/fold/0A.dhall +6/−0
- dhall-lang/tests/typecheck/success/prelude/List/fold/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/fold/1A.dhall +7/−0
- dhall-lang/tests/typecheck/success/prelude/List/fold/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/fold/2A.dhall +4/−0
- dhall-lang/tests/typecheck/success/prelude/List/fold/2B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/generate/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/generate/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/generate/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/generate/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/head/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/head/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/head/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/head/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/indexed/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/indexed/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/indexed/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/indexed/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/iterate/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/iterate/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/iterate/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/iterate/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/last/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/last/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/last/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/last/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/length/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/length/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/length/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/length/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/map/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/map/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/map/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/map/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/null/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/null/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/null/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/null/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/replicate/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/replicate/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/replicate/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/replicate/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/reverse/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/reverse/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/reverse/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/reverse/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/shifted/0A.dhall +15/−0
- dhall-lang/tests/typecheck/success/prelude/List/shifted/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/shifted/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/shifted/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/unzip/0A.dhall +7/−0
- dhall-lang/tests/typecheck/success/prelude/List/unzip/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/unzip/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/List/unzip/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/00A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/00B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/01A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/01B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/02A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/02B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/03A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/03B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/04A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/04B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/05A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/05B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/06A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/06B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/07A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/07B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/08A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/08B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/09A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/09B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/10A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Monoid/10B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/build/0A.dhall +6/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/build/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/build/1A.dhall +6/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/build/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/enumerate/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/enumerate/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/enumerate/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/enumerate/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/even/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/even/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/even/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/even/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/fold/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/fold/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/fold/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/fold/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/fold/2A.dhall +4/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/fold/2B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/isZero/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/isZero/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/isZero/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/isZero/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/odd/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/odd/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/odd/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/odd/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/product/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/product/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/product/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/product/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/show/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/show/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/show/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/show/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/sum/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/sum/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/sum/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/sum/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toDouble/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toDouble/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toDouble/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toDouble/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toInteger/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toInteger/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toInteger/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Natural/toInteger/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/all/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/all/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/all/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/all/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/any/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/any/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/any/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/any/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/build/0A.dhall +7/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/build/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/build/1A.dhall +7/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/build/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/concat/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/concat/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/concat/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/concat/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/concat/2A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/concat/2B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/filter/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/filter/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/filter/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/filter/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/fold/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/fold/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/fold/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/fold/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/head/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/head/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/head/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/head/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/head/2A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/head/2B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/last/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/last/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/last/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/last/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/last/2A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/last/2B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/length/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/length/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/length/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/length/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/map/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/map/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/map/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/map/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/null/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/null/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/null/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/null/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/toList/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/toList/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/toList/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/toList/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/unzip/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/unzip/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/unzip/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Optional/unzip/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concat/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concat/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concat/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concat/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMap/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMap/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMap/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMap/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMapSep/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMapSep/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMapSep/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatMapSep/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatSep/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatSep/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatSep/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/prelude/Text/concatSep/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/recordOfRecordOfTypesA.dhall +3/−0
- dhall-lang/tests/typecheck/success/recordOfRecordOfTypesB.dhall +1/−0
- dhall-lang/tests/typecheck/success/recordOfTypesA.dhall +1/−0
- dhall-lang/tests/typecheck/success/recordOfTypesB.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/access/0A.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/access/0B.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/access/1A.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/access/1B.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/alternativesAreTypesA.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/alternativesAreTypesB.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/anonymousFunctionsInTypesA.dhall +5/−0
- dhall-lang/tests/typecheck/success/simple/anonymousFunctionsInTypesB.dhall +4/−0
- dhall-lang/tests/typecheck/success/simple/fieldsAreTypesA.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/fieldsAreTypesB.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/kindParameterA.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/kindParameterB.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/mergeEquivalenceA.dhall +6/−0
- dhall-lang/tests/typecheck/success/simple/mergeEquivalenceB.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/mixedFieldAccessA.dhall +7/−0
- dhall-lang/tests/typecheck/success/simple/mixedFieldAccessB.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/unionsOfTypesA.dhall +1/−0
- dhall-lang/tests/typecheck/success/simple/unionsOfTypesB.dhall +1/−0
- dhall.cabal +337/−259
- doctest/Main.hs +4/−0
- src/Dhall.hs +294/−35
- src/Dhall/Binary.hs +166/−180
- src/Dhall/Core.hs +47/−37
- src/Dhall/Diff.hs +6/−16
- src/Dhall/Format.hs +86/−35
- src/Dhall/Freeze.hs +29/−7
- src/Dhall/Import.hs +110/−87
- src/Dhall/Import/HTTP.hs +4/−4
- src/Dhall/Lint.hs +45/−232
- src/Dhall/Main.hs +101/−27
- src/Dhall/Parser.hs +1/−0
- src/Dhall/Parser/Combinators.hs +17/−0
- src/Dhall/Parser/Expression.hs +8/−7
- src/Dhall/Parser/Token.hs +14/−5
- src/Dhall/Pretty/Internal.hs +34/−16
- src/Dhall/Repl.hs +198/−47
- src/Dhall/Tutorial.hs +12/−31
- src/Dhall/TypeCheck.hs +3/−9
- src/Dhall/Util.hs +7/−1
- tests/Dhall/Test/Dhall.hs +59/−0
- tests/Dhall/Test/Import.hs +19/−22
- tests/Dhall/Test/Lint.hs +3/−0
- tests/Dhall/Test/Main.hs +8/−2
- tests/Dhall/Test/Normalization.hs +4/−2
- tests/Dhall/Test/Parser.hs +69/−61
- tests/Dhall/Test/QuickCheck.hs +5/−4
- tests/Dhall/Test/Regression.hs +0/−11
- tests/Dhall/Test/TypeCheck.hs +3/−3
- tests/import/data/fieldOrder/1.dhall +0/−1
- tests/import/data/fieldOrder/2.dhall +0/−1
- tests/import/data/foo/bar/a.dhall +0/−1
- tests/import/failure/alternativeEnv.dhall +0/−1
- tests/import/failure/alternativeEnvMissing.dhall +0/−1
- tests/import/failure/missing.dhall +0/−1
- tests/import/success/alternativeEnvNaturalA.dhall +0/−1
- tests/import/success/alternativeEnvNaturalB.dhall +0/−1
- tests/import/success/alternativeEnvSimpleA.dhall +0/−1
- tests/import/success/alternativeEnvSimpleB.dhall +0/−1
- tests/import/success/alternativeNaturalA.dhall +0/−1
- tests/import/success/alternativeNaturalB.dhall +0/−1
- tests/import/success/fieldOrderA.dhall +0/−5
- tests/import/success/fieldOrderB.dhall +0/−1
- tests/import/success/issue553A.dhall +0/−5
- tests/import/success/issue553B.dhall +0/−1
- tests/import/success/relative.dhall +0/−2
- tests/lint/success/regression0A.dhall +7/−0
- tests/lint/success/regression0B.dhall +3/−0
- tests/normalization/success/haskell-tutorial/access/0A.dhall +0/−1
- tests/normalization/success/haskell-tutorial/access/0B.dhall +0/−1
- tests/normalization/success/haskell-tutorial/access/1A.dhall +0/−1
- tests/normalization/success/haskell-tutorial/access/1B.dhall +0/−1
- tests/normalization/success/haskell-tutorial/combineTypes/0A.dhall +0/−1
- tests/normalization/success/haskell-tutorial/combineTypes/0B.dhall +0/−1
- tests/normalization/success/haskell-tutorial/combineTypes/1A.dhall +0/−1
- tests/normalization/success/haskell-tutorial/combineTypes/1B.dhall +0/−1
- tests/normalization/success/haskell-tutorial/prefer/0A.dhall +0/−1
- tests/normalization/success/haskell-tutorial/prefer/0B.dhall +0/−1
- tests/normalization/success/haskell-tutorial/projection/0A.dhall +0/−1
- tests/normalization/success/haskell-tutorial/projection/0B.dhall +0/−1
- tests/normalization/success/multiline/escapeA.dhall +0/−9
- tests/normalization/success/multiline/escapeB.dhall +0/−1
- tests/normalization/success/multiline/hangingIndentA.dhall +0/−15
- tests/normalization/success/multiline/hangingIndentB.dhall +0/−1
- tests/normalization/success/multiline/interestingA.dhall +0/−7
- tests/normalization/success/multiline/interestingB.dhall +0/−1
- tests/normalization/success/multiline/interiorIndentA.dhall +0/−16
- tests/normalization/success/multiline/interiorIndentB.dhall +0/−1
- tests/normalization/success/multiline/interpolationA.dhall +0/−9
- tests/normalization/success/multiline/interpolationB.dhall +0/−1
- tests/normalization/success/multiline/preserveCommentA.dhall +0/−8
- tests/normalization/success/multiline/preserveCommentB.dhall +0/−1
- tests/normalization/success/multiline/singleLineA.dhall +0/−6
- tests/normalization/success/multiline/singleLineB.dhall +0/−1
- tests/normalization/success/multiline/twoLinesA.dhall +0/−7
- tests/normalization/success/multiline/twoLinesB.dhall +0/−1
- tests/normalization/success/prelude/Bool/and/0A.dhall +0/−1
- tests/normalization/success/prelude/Bool/and/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/and/1A.dhall +0/−1
- tests/normalization/success/prelude/Bool/and/1B.dhall +0/−1
- tests/normalization/success/prelude/Bool/build/0A.dhall +0/−2
- tests/normalization/success/prelude/Bool/build/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/build/1A.dhall +0/−2
- tests/normalization/success/prelude/Bool/build/1B.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/0A.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/1A.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/1B.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/2A.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/2B.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/3A.dhall +0/−1
- tests/normalization/success/prelude/Bool/even/3B.dhall +0/−1
- tests/normalization/success/prelude/Bool/fold/0A.dhall +0/−1
- tests/normalization/success/prelude/Bool/fold/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/fold/1A.dhall +0/−1
- tests/normalization/success/prelude/Bool/fold/1B.dhall +0/−1
- tests/normalization/success/prelude/Bool/not/0A.dhall +0/−1
- tests/normalization/success/prelude/Bool/not/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/not/1A.dhall +0/−1
- tests/normalization/success/prelude/Bool/not/1B.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/0A.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/1A.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/1B.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/2A.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/2B.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/3A.dhall +0/−1
- tests/normalization/success/prelude/Bool/odd/3B.dhall +0/−1
- tests/normalization/success/prelude/Bool/or/0A.dhall +0/−1
- tests/normalization/success/prelude/Bool/or/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/or/1A.dhall +0/−1
- tests/normalization/success/prelude/Bool/or/1B.dhall +0/−1
- tests/normalization/success/prelude/Bool/show/0A.dhall +0/−1
- tests/normalization/success/prelude/Bool/show/0B.dhall +0/−1
- tests/normalization/success/prelude/Bool/show/1A.dhall +0/−1
- tests/normalization/success/prelude/Bool/show/1B.dhall +0/−1
- tests/normalization/success/prelude/Double/show/0A.dhall +0/−1
- tests/normalization/success/prelude/Double/show/0B.dhall +0/−1
- tests/normalization/success/prelude/Double/show/1A.dhall +0/−1
- tests/normalization/success/prelude/Double/show/1B.dhall +0/−1
- tests/normalization/success/prelude/Integer/show/0A.dhall +0/−1
- tests/normalization/success/prelude/Integer/show/0B.dhall +0/−1
- tests/normalization/success/prelude/Integer/show/1A.dhall +0/−1
- tests/normalization/success/prelude/Integer/show/1B.dhall +0/−1
- tests/normalization/success/prelude/Integer/toDouble/0A.dhall +0/−1
- tests/normalization/success/prelude/Integer/toDouble/0B.dhall +0/−1
- tests/normalization/success/prelude/Integer/toDouble/1A.dhall +0/−1
- tests/normalization/success/prelude/Integer/toDouble/1B.dhall +0/−1
- tests/normalization/success/prelude/List/all/0A.dhall +0/−1
- tests/normalization/success/prelude/List/all/0B.dhall +0/−1
- tests/normalization/success/prelude/List/all/1A.dhall +0/−1
- tests/normalization/success/prelude/List/all/1B.dhall +0/−1
- tests/normalization/success/prelude/List/any/0A.dhall +0/−1
- tests/normalization/success/prelude/List/any/0B.dhall +0/−1
- tests/normalization/success/prelude/List/any/1A.dhall +0/−1
- tests/normalization/success/prelude/List/any/1B.dhall +0/−1
- tests/normalization/success/prelude/List/build/0A.dhall +0/−7
- tests/normalization/success/prelude/List/build/0B.dhall +0/−1
- tests/normalization/success/prelude/List/build/1A.dhall +0/−7
- tests/normalization/success/prelude/List/build/1B.dhall +0/−1
- tests/normalization/success/prelude/List/concat/0A.dhall +0/−5
- tests/normalization/success/prelude/List/concat/0B.dhall +0/−1
- tests/normalization/success/prelude/List/concat/1A.dhall +0/−5
- tests/normalization/success/prelude/List/concat/1B.dhall +0/−1
- tests/normalization/success/prelude/List/concatMap/0A.dhall +0/−1
- tests/normalization/success/prelude/List/concatMap/0B.dhall +0/−1
- tests/normalization/success/prelude/List/concatMap/1A.dhall +0/−1
- tests/normalization/success/prelude/List/concatMap/1B.dhall +0/−1
- tests/normalization/success/prelude/List/filter/0A.dhall +0/−1
- tests/normalization/success/prelude/List/filter/0B.dhall +0/−1
- tests/normalization/success/prelude/List/filter/1A.dhall +0/−1
- tests/normalization/success/prelude/List/filter/1B.dhall +0/−1
- tests/normalization/success/prelude/List/fold/0A.dhall +0/−6
- tests/normalization/success/prelude/List/fold/0B.dhall +0/−1
- tests/normalization/success/prelude/List/fold/1A.dhall +0/−7
- tests/normalization/success/prelude/List/fold/1B.dhall +0/−1
- tests/normalization/success/prelude/List/fold/2A.dhall +0/−4
- tests/normalization/success/prelude/List/fold/2B.dhall +0/−4
- tests/normalization/success/prelude/List/generate/0A.dhall +0/−1
- tests/normalization/success/prelude/List/generate/0B.dhall +0/−1
- tests/normalization/success/prelude/List/generate/1A.dhall +0/−1
- tests/normalization/success/prelude/List/generate/1B.dhall +0/−1
- tests/normalization/success/prelude/List/head/0A.dhall +0/−1
- tests/normalization/success/prelude/List/head/0B.dhall +0/−1
- tests/normalization/success/prelude/List/head/1A.dhall +0/−1
- tests/normalization/success/prelude/List/head/1B.dhall +0/−1
- tests/normalization/success/prelude/List/indexed/0A.dhall +0/−1
- tests/normalization/success/prelude/List/indexed/0B.dhall +0/−4
- tests/normalization/success/prelude/List/indexed/1A.dhall +0/−1
- tests/normalization/success/prelude/List/indexed/1B.dhall +0/−1
- tests/normalization/success/prelude/List/iterate/0A.dhall +0/−1
- tests/normalization/success/prelude/List/iterate/0B.dhall +0/−1
- tests/normalization/success/prelude/List/iterate/1A.dhall +0/−1
- tests/normalization/success/prelude/List/iterate/1B.dhall +0/−1
- tests/normalization/success/prelude/List/last/0A.dhall +0/−1
- tests/normalization/success/prelude/List/last/0B.dhall +0/−1
- tests/normalization/success/prelude/List/last/1A.dhall +0/−1
- tests/normalization/success/prelude/List/last/1B.dhall +0/−1
- tests/normalization/success/prelude/List/length/0A.dhall +0/−1
- tests/normalization/success/prelude/List/length/0B.dhall +0/−1
- tests/normalization/success/prelude/List/length/1A.dhall +0/−1
- tests/normalization/success/prelude/List/length/1B.dhall +0/−1
- tests/normalization/success/prelude/List/map/0A.dhall +0/−1
- tests/normalization/success/prelude/List/map/0B.dhall +0/−1
- tests/normalization/success/prelude/List/map/1A.dhall +0/−1
- tests/normalization/success/prelude/List/map/1B.dhall +0/−1
- tests/normalization/success/prelude/List/null/0A.dhall +0/−1
- tests/normalization/success/prelude/List/null/0B.dhall +0/−1
- tests/normalization/success/prelude/List/null/1A.dhall +0/−1
- tests/normalization/success/prelude/List/null/1B.dhall +0/−1
- tests/normalization/success/prelude/List/replicate/0A.dhall +0/−1
- tests/normalization/success/prelude/List/replicate/0B.dhall +0/−1
- tests/normalization/success/prelude/List/replicate/1A.dhall +0/−1
- tests/normalization/success/prelude/List/replicate/1B.dhall +0/−1
- tests/normalization/success/prelude/List/reverse/0A.dhall +0/−1
- tests/normalization/success/prelude/List/reverse/0B.dhall +0/−1
- tests/normalization/success/prelude/List/reverse/1A.dhall +0/−1
- tests/normalization/success/prelude/List/reverse/1B.dhall +0/−1
- tests/normalization/success/prelude/List/shifted/0A.dhall +0/−15
- tests/normalization/success/prelude/List/shifted/0B.dhall +0/−10
- tests/normalization/success/prelude/List/shifted/1A.dhall +0/−1
- tests/normalization/success/prelude/List/shifted/1B.dhall +0/−1
- tests/normalization/success/prelude/List/unzip/0A.dhall +0/−7
- tests/normalization/success/prelude/List/unzip/0B.dhall +0/−1
- tests/normalization/success/prelude/List/unzip/1A.dhall +0/−1
- tests/normalization/success/prelude/List/unzip/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/build/0A.dhall +0/−6
- tests/normalization/success/prelude/Natural/build/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/build/1A.dhall +0/−6
- tests/normalization/success/prelude/Natural/build/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/enumerate/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/enumerate/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/enumerate/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/enumerate/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/even/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/even/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/even/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/even/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/fold/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/fold/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/fold/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/fold/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/fold/2A.dhall +0/−4
- tests/normalization/success/prelude/Natural/fold/2B.dhall +0/−1
- tests/normalization/success/prelude/Natural/isZero/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/isZero/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/isZero/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/isZero/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/odd/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/odd/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/odd/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/odd/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/product/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/product/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/product/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/product/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/show/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/show/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/show/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/show/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/sum/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/sum/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/sum/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/sum/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/toDouble/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/toDouble/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/toDouble/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/toDouble/1B.dhall +0/−1
- tests/normalization/success/prelude/Natural/toInteger/0A.dhall +0/−1
- tests/normalization/success/prelude/Natural/toInteger/0B.dhall +0/−1
- tests/normalization/success/prelude/Natural/toInteger/1A.dhall +0/−1
- tests/normalization/success/prelude/Natural/toInteger/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/all/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/all/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/all/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/all/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/any/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/any/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/any/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/any/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/build/0A.dhall +0/−7
- tests/normalization/success/prelude/Optional/build/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/build/1A.dhall +0/−7
- tests/normalization/success/prelude/Optional/build/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/concat/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/concat/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/concat/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/concat/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/concat/2A.dhall +0/−1
- tests/normalization/success/prelude/Optional/concat/2B.dhall +0/−1
- tests/normalization/success/prelude/Optional/filter/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/filter/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/filter/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/filter/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/fold/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/fold/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/fold/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/fold/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/head/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/head/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/head/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/head/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/head/2A.dhall +0/−1
- tests/normalization/success/prelude/Optional/head/2B.dhall +0/−1
- tests/normalization/success/prelude/Optional/last/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/last/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/last/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/last/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/last/2A.dhall +0/−1
- tests/normalization/success/prelude/Optional/last/2B.dhall +0/−1
- tests/normalization/success/prelude/Optional/length/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/length/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/length/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/length/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/map/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/map/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/map/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/map/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/null/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/null/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/null/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/null/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/toList/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/toList/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/toList/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/toList/1B.dhall +0/−1
- tests/normalization/success/prelude/Optional/unzip/0A.dhall +0/−1
- tests/normalization/success/prelude/Optional/unzip/0B.dhall +0/−1
- tests/normalization/success/prelude/Optional/unzip/1A.dhall +0/−1
- tests/normalization/success/prelude/Optional/unzip/1B.dhall +0/−1
- tests/normalization/success/prelude/Text/concat/0A.dhall +0/−1
- tests/normalization/success/prelude/Text/concat/0B.dhall +0/−1
- tests/normalization/success/prelude/Text/concat/1A.dhall +0/−1
- tests/normalization/success/prelude/Text/concat/1B.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMap/0A.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMap/0B.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMap/1A.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMap/1B.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMapSep/0A.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMapSep/0B.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMapSep/1A.dhall +0/−1
- tests/normalization/success/prelude/Text/concatMapSep/1B.dhall +0/−1
- tests/normalization/success/prelude/Text/concatSep/0A.dhall +0/−1
- tests/normalization/success/prelude/Text/concatSep/0B.dhall +0/−1
- tests/normalization/success/prelude/Text/concatSep/1A.dhall +0/−1
- tests/normalization/success/prelude/Text/concatSep/1B.dhall +0/−1
- tests/normalization/success/remoteSystemsA.dhall +0/−52
- tests/normalization/success/remoteSystemsB.dhall +0/−212
- tests/normalization/success/simple/doubleShowA.dhall +0/−1
- tests/normalization/success/simple/doubleShowB.dhall +0/−1
- tests/normalization/success/simple/integerShowA.dhall +0/−4
- tests/normalization/success/simple/integerShowB.dhall +0/−1
- tests/normalization/success/simple/integerToDoubleA.dhall +0/−10
- tests/normalization/success/simple/integerToDoubleB.dhall +0/−9
- tests/normalization/success/simple/letletA.dhall +0/−3
- tests/normalization/success/simple/letletB.dhall +0/−1
- tests/normalization/success/simple/listBuildA.dhall +0/−22
- tests/normalization/success/simple/listBuildB.dhall +0/−7
- tests/normalization/success/simple/multiLineA.dhall +0/−4
- tests/normalization/success/simple/multiLineB.dhall +0/−4
- tests/normalization/success/simple/naturalBuildA.dhall +0/−18
- tests/normalization/success/simple/naturalBuildB.dhall +0/−7
- tests/normalization/success/simple/naturalPlusA.dhall +0/−1
- tests/normalization/success/simple/naturalPlusB.dhall +0/−1
- tests/normalization/success/simple/naturalShowA.dhall +0/−1
- tests/normalization/success/simple/naturalShowB.dhall +0/−1
- tests/normalization/success/simple/naturalToIntegerA.dhall +0/−1
- tests/normalization/success/simple/naturalToIntegerB.dhall +0/−1
- tests/normalization/success/simple/optionalBuildA.dhall +0/−32
- tests/normalization/success/simple/optionalBuildB.dhall +0/−9
- tests/normalization/success/simple/optionalBuildFoldA.dhall +0/−1
- tests/normalization/success/simple/optionalBuildFoldB.dhall +0/−1
- tests/normalization/success/simple/optionalFoldA.dhall +0/−7
- tests/normalization/success/simple/optionalFoldB.dhall +0/−1
- tests/normalization/success/simple/sortOperatorA.dhall +0/−1
- tests/normalization/success/simple/sortOperatorB.dhall +0/−1
- tests/normalization/success/simplifications/andA.dhall +0/−6
- tests/normalization/success/simplifications/andB.dhall +0/−6
- tests/normalization/success/simplifications/eqA.dhall +0/−4
- tests/normalization/success/simplifications/eqB.dhall +0/−4
- tests/normalization/success/simplifications/ifThenElseA.dhall +0/−3
- tests/normalization/success/simplifications/ifThenElseB.dhall +0/−3
- tests/normalization/success/simplifications/neA.dhall +0/−4
- tests/normalization/success/simplifications/neB.dhall +0/−4
- tests/normalization/success/simplifications/orA.dhall +0/−6
- tests/normalization/success/simplifications/orB.dhall +0/−6
- tests/parser/failure/doubleBoundsNeg.dhall +0/−1
- tests/parser/failure/doubleBoundsPos.dhall +0/−1
- tests/parser/failure/importAccess.dhall +0/−1
- tests/parser/failure/mandatoryNewline.dhall +0/−2
- tests/parser/success/annotationsA.dhall +0/−4
- tests/parser/success/annotationsB.dhall +0/−84
- tests/parser/success/asTextA.dhall +0/−1
- tests/parser/success/asTextB.dhall +0/−11
- tests/parser/success/blockCommentA.dhall +0/−3
- tests/parser/success/blockCommentB.dhall +0/−4
- tests/parser/success/builtinsA.dhall +0/−31
- tests/parser/success/builtinsB.dhall +0/−57
- tests/parser/success/collectionImportTypeA.dhall +0/−3
- tests/parser/success/collectionImportTypeB.dhall +0/−25
- tests/parser/success/constructorsA.dhall +0/−1
- tests/parser/success/constructorsB.dhall +0/−10
- tests/parser/success/customHeadersA.dhall +0/−1
- tests/parser/success/customHeadersB.dhall +0/−17
- tests/parser/success/doubleA.dhall +0/−1
- tests/parser/success/doubleB.dhall +0/−9
- tests/parser/success/doubleQuotedStringA.dhall +0/−1
- tests/parser/success/doubleQuotedStringB.dhall +0/−4
- tests/parser/success/environmentVariablesA.dhall +0/−5
- tests/parser/success/environmentVariablesB.dhall +0/−18
- tests/parser/success/escapedDoubleQuotedStringA.dhall +0/−1
- tests/parser/success/escapedDoubleQuotedStringB.dhall +0/−4
- tests/parser/success/escapedSingleQuotedStringA.dhall +0/−4
- tests/parser/success/escapedSingleQuotedStringB.dhall +0/−4
- tests/parser/success/fieldsA.dhall +0/−1
- tests/parser/success/fieldsB.dhall +0/−31
- tests/parser/success/forallA.dhall +0/−1
- tests/parser/success/forallB.dhall +0/−11
- tests/parser/success/functionTypeA.dhall +0/−1
- tests/parser/success/functionTypeB.dhall +0/−9
- tests/parser/success/identifierA.dhall +0/−1
- tests/parser/success/identifierB.dhall +0/−14
- tests/parser/success/ifThenElseA.dhall +0/−1
- tests/parser/success/ifThenElseB.dhall +0/−12
- tests/parser/success/importAltA.dhall +0/−1
- tests/parser/success/importAltB.dhall +0/−47
- tests/parser/success/interpolatedDoubleQuotedStringA.dhall +0/−1
- tests/parser/success/interpolatedDoubleQuotedStringB.dhall +0/−13
- tests/parser/success/interpolatedSingleQuotedStringA.dhall +0/−4
- tests/parser/success/interpolatedSingleQuotedStringB.dhall +0/−13
- tests/parser/success/labelA.dhall +0/−2
- tests/parser/success/labelB.dhall +0/−10
- tests/parser/success/lambdaA.dhall +0/−1
- tests/parser/success/lambdaB.dhall +0/−11
- tests/parser/success/largeExpressionA.dhall +0/−254
- tests/parser/success/largeExpressionB.dhall +0/−1303
- tests/parser/success/letA.dhall +0/−3
- tests/parser/success/letB.dhall +0/−19
- tests/parser/success/lineCommentA.dhall +0/−3
- tests/parser/success/lineCommentB.dhall +0/−4
- tests/parser/success/listA.dhall +0/−4
- tests/parser/success/listB.dhall +0/−40
- tests/parser/success/mergeA.dhall +0/−7
- tests/parser/success/mergeB.dhall +0/−45
- tests/parser/success/multiletA.dhall +0/−3
- tests/parser/success/multiletB.dhall +0/−21
- tests/parser/success/naturalA.dhall +0/−1
- tests/parser/success/naturalB.dhall +0/−20
- tests/parser/success/nestedBlockCommentA.dhall +0/−3
- tests/parser/success/nestedBlockCommentB.dhall +0/−4
- tests/parser/success/operatorsA.dhall +0/−2
- tests/parser/success/operatorsB.dhall +0/−96
- tests/parser/success/parenthesizeUsingA.dhall +0/−1
- tests/parser/success/parenthesizeUsingB.dhall +0/−27
- tests/parser/success/pathTerminationA.dhall +0/−3
- tests/parser/success/pathTerminationB.dhall +0/−53
- tests/parser/success/pathsA.dhall +0/−5
- tests/parser/success/pathsB.dhall +0/−38
- tests/parser/success/quotedLabelA.dhall +0/−4
- tests/parser/success/quotedLabelB.dhall +0/−35
- tests/parser/success/quotedPathsA.dhall +0/−3
- tests/parser/success/quotedPathsB.dhall +0/−26
- tests/parser/success/recordA.dhall +0/−4
- tests/parser/success/recordB.dhall +0/−25
- tests/parser/success/reservedPrefixA.dhall +0/−1
- tests/parser/success/reservedPrefixB.dhall +0/−14
- tests/parser/success/singleQuotedStringA.dhall +0/−4
- tests/parser/success/singleQuotedStringB.dhall +0/−4
- tests/parser/success/sortA.dhall +0/−1
- tests/parser/success/sortB.dhall +0/−1
- tests/parser/success/templateA.dhall +0/−13
- tests/parser/success/templateB.dhall +0/−60
- tests/parser/success/unicodeCommentA.dhall +0/−3
- tests/parser/success/unicodeCommentB.dhall +0/−4
- tests/parser/success/unicodeDoubleQuotedStringA.dhall +0/−1
- tests/parser/success/unicodeDoubleQuotedStringB.dhall +0/−4
- tests/parser/success/unionA.dhall +0/−4
- tests/parser/success/unionB.dhall +0/−38
- tests/parser/success/urlsA.dhall +0/−12
- tests/parser/success/urlsB.dhall +0/−110
- tests/parser/success/whitespaceA.dhall +0/−3
- tests/parser/success/whitespaceB.dhall +0/−4
- tests/parser/success/whitespaceBuffetA.dhall +0/−9
- tests/parser/success/whitespaceBuffetB.dhall +0/−8
- tests/regression/issue209.dhall +0/−1
- tests/tutorial/unions3A.dhall +1/−1
- tests/tutorial/unions4A.dhall +1/−1
- tests/typecheck/failure/combineMixedRecords.dhall +0/−1
- tests/typecheck/failure/hurkensParadox.dhall +0/−49
- tests/typecheck/failure/mixedUnions.dhall +0/−1
- tests/typecheck/failure/preferMixedRecords.dhall +0/−1
- tests/typecheck/success/accessEncodedTypeA.dhall +0/−4
- tests/typecheck/success/accessEncodedTypeB.dhall +0/−4
- tests/typecheck/success/accessTypeA.dhall +0/−1
- tests/typecheck/success/accessTypeB.dhall +0/−1
- tests/typecheck/success/prelude/Bool/and/0A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/and/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/and/1A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/and/1B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/build/0A.dhall +0/−2
- tests/typecheck/success/prelude/Bool/build/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/build/1A.dhall +0/−2
- tests/typecheck/success/prelude/Bool/build/1B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/0A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/1A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/1B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/2A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/2B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/3A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/even/3B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/fold/0A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/fold/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/fold/1A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/fold/1B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/not/0A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/not/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/not/1A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/not/1B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/0A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/1A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/1B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/2A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/2B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/3A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/odd/3B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/or/0A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/or/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/or/1A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/or/1B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/show/0A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/show/0B.dhall +0/−1
- tests/typecheck/success/prelude/Bool/show/1A.dhall +0/−1
- tests/typecheck/success/prelude/Bool/show/1B.dhall +0/−1
- tests/typecheck/success/prelude/Double/show/0A.dhall +0/−1
- tests/typecheck/success/prelude/Double/show/0B.dhall +0/−1
- tests/typecheck/success/prelude/Double/show/1A.dhall +0/−1
- tests/typecheck/success/prelude/Double/show/1B.dhall +0/−1
- tests/typecheck/success/prelude/Integer/show/0A.dhall +0/−1
- tests/typecheck/success/prelude/Integer/show/0B.dhall +0/−1
- tests/typecheck/success/prelude/Integer/show/1A.dhall +0/−1
- tests/typecheck/success/prelude/Integer/show/1B.dhall +0/−1
- tests/typecheck/success/prelude/Integer/toDouble/0A.dhall +0/−1
- tests/typecheck/success/prelude/Integer/toDouble/0B.dhall +0/−1
- tests/typecheck/success/prelude/Integer/toDouble/1A.dhall +0/−1
- tests/typecheck/success/prelude/Integer/toDouble/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/all/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/all/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/all/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/all/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/any/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/any/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/any/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/any/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/build/0A.dhall +0/−7
- tests/typecheck/success/prelude/List/build/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/build/1A.dhall +0/−7
- tests/typecheck/success/prelude/List/build/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/concat/0A.dhall +0/−5
- tests/typecheck/success/prelude/List/concat/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/concat/1A.dhall +0/−5
- tests/typecheck/success/prelude/List/concat/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/concatMap/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/concatMap/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/concatMap/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/concatMap/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/filter/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/filter/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/filter/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/filter/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/fold/0A.dhall +0/−6
- tests/typecheck/success/prelude/List/fold/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/fold/1A.dhall +0/−7
- tests/typecheck/success/prelude/List/fold/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/fold/2A.dhall +0/−4
- tests/typecheck/success/prelude/List/fold/2B.dhall +0/−1
- tests/typecheck/success/prelude/List/generate/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/generate/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/generate/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/generate/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/head/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/head/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/head/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/head/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/indexed/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/indexed/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/indexed/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/indexed/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/iterate/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/iterate/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/iterate/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/iterate/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/last/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/last/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/last/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/last/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/length/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/length/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/length/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/length/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/map/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/map/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/map/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/map/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/null/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/null/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/null/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/null/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/replicate/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/replicate/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/replicate/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/replicate/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/reverse/0A.dhall +0/−1
- tests/typecheck/success/prelude/List/reverse/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/reverse/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/reverse/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/shifted/0A.dhall +0/−15
- tests/typecheck/success/prelude/List/shifted/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/shifted/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/shifted/1B.dhall +0/−1
- tests/typecheck/success/prelude/List/unzip/0A.dhall +0/−7
- tests/typecheck/success/prelude/List/unzip/0B.dhall +0/−1
- tests/typecheck/success/prelude/List/unzip/1A.dhall +0/−1
- tests/typecheck/success/prelude/List/unzip/1B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/00A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/00B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/01A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/01B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/02A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/02B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/03A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/03B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/04A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/04B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/05A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/05B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/06A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/06B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/07A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/07B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/08A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/08B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/09A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/09B.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/10A.dhall +0/−1
- tests/typecheck/success/prelude/Monoid/10B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/build/0A.dhall +0/−6
- tests/typecheck/success/prelude/Natural/build/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/build/1A.dhall +0/−6
- tests/typecheck/success/prelude/Natural/build/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/enumerate/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/enumerate/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/enumerate/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/enumerate/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/even/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/even/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/even/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/even/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/fold/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/fold/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/fold/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/fold/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/fold/2A.dhall +0/−4
- tests/typecheck/success/prelude/Natural/fold/2B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/isZero/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/isZero/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/isZero/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/isZero/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/odd/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/odd/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/odd/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/odd/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/product/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/product/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/product/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/product/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/show/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/show/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/show/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/show/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/sum/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/sum/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/sum/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/sum/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toDouble/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toDouble/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toDouble/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toDouble/1B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toInteger/0A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toInteger/0B.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toInteger/1A.dhall +0/−1
- tests/typecheck/success/prelude/Natural/toInteger/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/all/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/all/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/all/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/all/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/any/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/any/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/any/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/any/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/build/0A.dhall +0/−7
- tests/typecheck/success/prelude/Optional/build/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/build/1A.dhall +0/−7
- tests/typecheck/success/prelude/Optional/build/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/concat/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/concat/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/concat/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/concat/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/concat/2A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/concat/2B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/filter/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/filter/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/filter/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/filter/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/fold/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/fold/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/fold/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/fold/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/head/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/head/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/head/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/head/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/head/2A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/head/2B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/last/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/last/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/last/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/last/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/last/2A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/last/2B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/length/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/length/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/length/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/length/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/map/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/map/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/map/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/map/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/null/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/null/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/null/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/null/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/toList/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/toList/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/toList/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/toList/1B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/unzip/0A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/unzip/0B.dhall +0/−1
- tests/typecheck/success/prelude/Optional/unzip/1A.dhall +0/−1
- tests/typecheck/success/prelude/Optional/unzip/1B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concat/0A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concat/0B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concat/1A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concat/1B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMap/0A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMap/0B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMap/1A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMap/1B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMapSep/0A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMapSep/0B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMapSep/1A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatMapSep/1B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatSep/0A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatSep/0B.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatSep/1A.dhall +0/−1
- tests/typecheck/success/prelude/Text/concatSep/1B.dhall +0/−1
- tests/typecheck/success/recordOfRecordOfTypesA.dhall +0/−3
- tests/typecheck/success/recordOfRecordOfTypesB.dhall +0/−1
- tests/typecheck/success/recordOfTypesA.dhall +0/−1
- tests/typecheck/success/recordOfTypesB.dhall +0/−1
- tests/typecheck/success/simple/access/0A.dhall +0/−1
- tests/typecheck/success/simple/access/0B.dhall +0/−1
- tests/typecheck/success/simple/access/1A.dhall +0/−1
- tests/typecheck/success/simple/access/1B.dhall +0/−1
- tests/typecheck/success/simple/alternativesAreTypesA.dhall +0/−1
- tests/typecheck/success/simple/alternativesAreTypesB.dhall +0/−1
- tests/typecheck/success/simple/anonymousFunctionsInTypesA.dhall +0/−5
- tests/typecheck/success/simple/anonymousFunctionsInTypesB.dhall +0/−4
- tests/typecheck/success/simple/fieldsAreTypesA.dhall +0/−1
- tests/typecheck/success/simple/fieldsAreTypesB.dhall +0/−1
- tests/typecheck/success/simple/kindParameterA.dhall +0/−1
- tests/typecheck/success/simple/kindParameterB.dhall +0/−1
- tests/typecheck/success/simple/mergeEquivalenceA.dhall +0/−6
- tests/typecheck/success/simple/mergeEquivalenceB.dhall +0/−1
- tests/typecheck/success/simple/mixedFieldAccessA.dhall +0/−7
- tests/typecheck/success/simple/mixedFieldAccessB.dhall +0/−1
- tests/typecheck/success/simple/unionsOfTypesA.dhall +0/−1
- tests/typecheck/success/simple/unionsOfTypesB.dhall +0/−1
@@ -1,3 +1,105 @@+1.21.0++* Supports version 6.0.0 of the language standard+ * See: https://github.com/dhall-lang/dhall-lang/releases/tag/v6.0.0+* BREAKING CHANGE: Remove the `constructors` keyword+ * ... as standardized in version 6.0.0 of the language standard+ * The deprecation cycle is over, so the keyword is no longer supported+ * For more details, see: https://github.com/dhall-lang/dhall-lang/wiki/Migration%3A-Deprecation-of-constructors-keyword+ * See: https://github.com/dhall-lang/dhall-haskell/pull/829+* BREAKING CHANGE: CBOR-encode only special `Double`s as half-floats+ * ... as standardized in version 6.0.0 of the language standard+ * CBOR `Double`s except `Infinity`/`-Infinity`/`NaN`/`0.0` are now encoded in at+ least 32 bits+ * See: https://github.com/dhall-lang/dhall-haskell/pull/822+* BREAKING CHANGE: Sort record and union fields when CBOR-encoding+ * Fields and alternatives are now sorted when serialized+ * This does not affect semantic integrity checks, which already sorted these+ fields/alternatives before hashing expressions+ * This does affect the serialization of expressions that have not been+ normalized (e.g. uninterpreted expressions transmitted over the wire)+ * See: https://github.com/dhall-lang/dhall-haskell/pull/835+* BUG FIX: Fix non-exhaustive pattern match in `dhall lint`+ * This fixes: `Irrefutable pattern failed for pattern Let (l' :| ls') d'`+ * This bug would cause `dhall lint` to fail on some nested `let`/`in`+ expressions+ * See: https://github.com/dhall-lang/dhall-haskell/pull/780+ * See: https://github.com/dhall-lang/dhall-haskell/pull/784+* BUG FIX: Don't fail if `$HOME` environment variable is unset+ * The interpreter was incorrectly throwing an exception if `HOME` was unset+ * The standard requires that implementations should handle the `HOME`+ environment variable being missing+ * See: https://github.com/dhall-lang/dhall-haskell/pull/789+* Feature: Remove version tag from semantic integrity check+ * ... as standardized in version 6.0.0 of the language standard+ * This is not a breaking change because this change also includes+ backwards-compatible support for semantic integrity checks produced by+ older versions of the interpreter+* Feature: Support Unicode path components+ * ... as standardized in version 6.0.0 of the language standard+ * You can now use Unicode in path components if they are quoted+ * i.e. `./families/"禺.dhall"` is now legal+* Feature: Add `Text/show` built-in+ * ... as standardized in version 6.0.0 of the language standard+ * You can now convert a `Text` literal to its equivalent Dhall source code+ (which is itself a `Text` literal)+ * This comes in handy when using Dhall code to generate JSON or Dhall code+ * See: https://github.com/dhall-lang/dhall-haskell/pull/811+* Feature: Add `--immediate-dependencies`/`--transitive-dependencies` flags for+ `dhall resolve`+ * You can now retrieve all of your immediate or transitive dependencies as a+ textual list+ * This simplifies integration with other command-line tools (such as file+ watchers)+ * See: https://github.com/dhall-lang/dhall-haskell/pull/795+ * See: https://github.com/dhall-lang/dhall-haskell/pull/803+* Feature: `dhall freeze` now only freezes remote imports by default+ * `dhall freeze` used to freeze all imports (including local imports and+ environment variables)+ * Now `dhall freeze` only freezes remote imports by default, which is what+ most users want+ * You can install freeze all imports using the `--all` flag+ * See: https://github.com/dhall-lang/dhall-haskell/pull/808+* Feature: `:save` and `:load` REPL state+ * `:save` with no arguments now saves the REPL state to a `.dhall-repl-N`+ file+ * The file format is a list of `dhall repl` commands+ * You can use `:load` to load the saved state back into the REPL+ * See: https://github.com/dhall-lang/dhall-haskell/pull/807+* Feature: Add `:hash` command to `dhall repl`+ * This lets you conveniently hash expressions within the `dhall repl`+ * See: https://github.com/dhall-lang/dhall-haskell/pull/806+* Feature: Add `--check` flag to `dhall format`+ * Use this to check if the input is already formatted+ * Useful for continuous integration when you want to ensure that all code+ under version control remains formatted+ * See: https://github.com/dhall-lang/dhall-haskell/pull/810+* Feature: Add `UnionInputType` builder for `InputType`s+ * This is the union analog of `RecordInputType`, letting you build a+ record explicitly instead of deriving the instance using GHC generics+ * See: https://github.com/dhall-lang/dhall-haskell/pull/775+* Feature: Add `:set`/`:unset` commands to `dhall repl`+ * You can use these commands to set or unset command-line options+ * Currently only setting/unsetting `--explain` is supported+* Standards-compliance fixes:+ * See: https://github.com/dhall-lang/dhall-haskell/pull/779+ * See: https://github.com/dhall-lang/dhall-haskell/pull/804+ * See: https://github.com/dhall-lang/dhall-haskell/pull/833+* Documentation fixes:+ * See: https://github.com/dhall-lang/dhall-haskell/pull/792+ * See: https://github.com/dhall-lang/dhall-haskell/pull/825+* Test fixes:+ * See: https://github.com/dhall-lang/dhall-haskell/pull/782+ * See: https://github.com/dhall-lang/dhall-haskell/pull/836+* Improved error messages:+ * See: https://github.com/dhall-lang/dhall-haskell/pull/812+ * See: https://github.com/dhall-lang/dhall-haskell/pull/815+ * See: https://github.com/dhall-lang/dhall-haskell/pull/824+* Formatting fixes:+ * See: https://github.com/dhall-lang/dhall-haskell/pull/831+* REPL fixes:+ * See: https://github.com/dhall-lang/dhall-haskell/pull/837+ 1.20.1 * BUG FIX: Fix binary encoding to use correct standard version
@@ -1,1 +0,0 @@-https://raw.githubusercontent.com/dhall-lang/Prelude/a22da69657b9316a3c51ba0bf80c9d4024db3fce/Monoid sha256:b306524b2f7fedd7dad0d328990e0b6271d93d6f2fbe7156474b757f5d8de187
@@ -1,1 +0,0 @@-https://raw.githubusercontent.com/dhall-lang/Prelude/e9c90396c02f9eb0fe66c00c544615cbfa068f34/package.dhall sha256:26e13b153cb428366610110d4d8f0c135e22b20179d5478bb16b1b83b3f2ca13
@@ -72,7 +72,7 @@ term <- case Codec.Serialise.deserialiseOrFail bytes of Left _ -> Nothing Right term -> return term- case Dhall.Binary.decodeWithVersion term of+ case Dhall.Binary.decode term of Left _ -> Nothing Right expression -> return expression
@@ -0,0 +1,18 @@+{-+The `and` function returns `False` if there are any `False` elements in the+`List` and returns `True` otherwise++Examples:++```+./and [ True, False, True ] = False++./and ([] : List Bool) = True+```+-}+ let and+ : List Bool → Bool+ = λ(xs : List Bool)+ → List/fold Bool xs Bool (λ(l : Bool) → λ(r : Bool) → l && r) True++in and
@@ -0,0 +1,17 @@+{-+`build` is the inverse of `fold`++Examples:++```+./build (λ(bool : Type) → λ(true : bool) → λ(false : bool) → true) = True++./build (λ(bool : Type) → λ(true : bool) → λ(false : bool) → false) = False+```+-}+ let build+ : (∀(bool : Type) → ∀(true : bool) → ∀(false : bool) → bool) → Bool+ = λ(f : ∀(bool : Type) → ∀(true : bool) → ∀(false : bool) → bool)+ → f Bool True False++in build
@@ -0,0 +1,22 @@+{-+Returns `True` if there are an even number of `False` elements in the list and+returns `False` otherwise++Examples:++```+./even [ False, True, False ] = True++./even [ False, True ] = False++./even [ False ] = False++./even ([] : List Bool) = True+```+-}+ let even+ : List Bool → Bool+ = λ(xs : List Bool)+ → List/fold Bool xs Bool (λ(x : Bool) → λ(y : Bool) → x == y) True++in even
@@ -0,0 +1,20 @@+{-+`fold` is essentially the same as `if`/`then`/else` except as a function++Examples:++```+./fold True Natural 0 1 = 0++./fold False Natural 0 1 = 1+```+-}+ let fold+ : ∀(b : Bool) → ∀(bool : Type) → ∀(true : bool) → ∀(false : bool) → bool+ = λ(b : Bool)+ → λ(bool : Type)+ → λ(true : bool)+ → λ(false : bool)+ → if b then true else false++in fold
@@ -0,0 +1,12 @@+{-+Flip the value of a `Bool`++Examples:++```+./not True = False++./not False = True+```+-}+let not : Bool → Bool = λ(b : Bool) → b == False in not
@@ -0,0 +1,22 @@+{-+Returns `True` if there are an odd number of `True` elements in the list and+returns `False` otherwise++Examples:++```+./odd [ True, False, True ] = False++./odd [ True, False ] = True++./odd [ True ] = True++./odd ([] : List Bool) = False+```+-}+ let odd+ : List Bool → Bool+ = λ(xs : List Bool)+ → List/fold Bool xs Bool (λ(x : Bool) → λ(y : Bool) → x != y) False++in odd
@@ -0,0 +1,18 @@+{-+The `or` function returns `True` if there are any `True` elements in the `List`+and returns `False` otherwise++Examples:++```+./or [ True, False, True ] = True++./or ([] : List Bool) = False+```+-}+ let or+ : List Bool → Bool+ = λ(xs : List Bool)+ → List/fold Bool xs Bool (λ(l : Bool) → λ(r : Bool) → l || r) False++in or
@@ -0,0 +1,17 @@+{ and =+ ./and+, build =+ ./build+, even =+ ./even+, fold =+ ./fold+, not =+ ./not+, odd =+ ./odd+, or =+ ./or+, show =+ ./show+}
@@ -0,0 +1,13 @@+{-+Render a `Bool` as `Text` using the same representation as Dhall source code+(i.e. beginning with a capital letter)++Examples:++```+./show True = "True"++./show False = "False"+```+-}+let show : Bool → Text = λ(b : Bool) → if b then "True" else "False" in show
@@ -0,0 +1,1 @@+{ show = ./show }
@@ -0,0 +1,13 @@+{-+Render a `Double` as `Text` using the same representation as Dhall source+code (i.e. a decimal floating point number with a leading `-` sign if negative)++Examples:++```+./show -3.1 = "-3.1"++./show 0.4 = "0.4"+```+-}+let show : Double → Text = Double/show in show
@@ -0,0 +1,21 @@+{-+Compose two functions into one.++Examples:++```+./compose Natural Natural Bool (λ(n : Natural) → n + n) ../Natural/even 3+= True+```+-}+ let compose+ : ∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (a → b) → (b → c) → a → c+ = λ(A : Type)+ → λ(B : Type)+ → λ(C : Type)+ → λ(f : A → B)+ → λ(g : B → C)+ → λ(x : A)+ → g (f x)++in compose
@@ -0,0 +1,1 @@+{ compose = ./compose }
@@ -0,0 +1,1 @@+{ show = ./show, toDouble = ./toDouble }
@@ -0,0 +1,14 @@+{-+Render an `Integer` as `Text` using the same representation as Dhall source+code (i.e. a decimal number with a leading `-` sign if negative and a leading+`+` sign if non-negative)++Examples:++```+./show -3 = "-3"++./show +0 = "+0"+```+-}+let show : Integer → Text = Integer/show in show
@@ -0,0 +1,12 @@+{-+Convert an `Integer` to the corresponding `Double`++Examples:++```+./toDouble -3 = -3.0++./toDouble +2 = 2.0+```+-}+let toDouble : Integer → Double = Integer/toDouble in toDouble
@@ -0,0 +1,32 @@+{-+This type is used as part of `dhall-json`'s support for preserving alternative+names++For example, this Dhall code:++```+ let Example = < Left : { foo : Natural } | Right : { bar : Bool } >++in let example = constructors Example++in let Nesting = < Inline : {} | Nested : Text >++in let nesting = constructors Nesting++in { field = "name"+ , nesting = nesting.Inline {=}+ , contents = example.Left { foo = 2 }+ }+```++... generates this JSON:++```+{+ "foo": 2,+ "name": "Left"+ }+```++-}+let Nesting : Type = < Inline : {} | Nested : Text > in Nesting
@@ -0,0 +1,69 @@+{-+This is a convenient type-level function when using `dhall-to-json`'s support+for preserving alternative names++For example, this code:++```+ let map = ../List/map++in let Provisioner =+ < shell :+ { inline : List Text }+ | file :+ { source : Text, destination : Text }+ >++in let provisioner = constructors Provisioner++in let Tagged = ./Tagged++in let nesting = constructors ./Nesting++in let wrap+ : Provisioner → Tagged Provisioner+ = λ(x : Provisioner)+ → { field = "type", nesting = nesting.Nested "params", contents = x }++in { provisioners =+ map+ Provisioner+ (Tagged Provisioner)+ wrap+ [ provisioner.shell { inline = [ "echo foo" ] }+ , provisioner.file+ { source = "app.tar.gz", destination = "/tmp/app.tar.gz" }+ ]+ }+```++... produces this JSON:++```+{+ "provisioners": [+ {+ "params": {+ "inline": [+ "echo foo"+ ]+ },+ "type": "shell"+ },+ {+ "params": {+ "destination": "/tmp/app.tar.gz",+ "source": "app.tar.gz"+ },+ "type": "file"+ }+ ]+}+```++-}+ let Tagged+ : Type → Type+ = λ(a : Type) → { field : Text, nesting : ./Nesting, contents : a }++in Tagged
@@ -0,0 +1,17 @@+{-+Builds a key-value record such that a List of them will be converted to a+homogeneous record by dhall-to-json and dhall-to-yaml.+Both key and value are fixed to Text.+Take a look at `Record/keyValue` for a polymorphic version.++Example:++```+./keyText "foo" "bar" = { mapKey = "foo", mapValue = "bar" }+```+-}++ let keyText =+ λ(key : Text) → λ(value : Text) → { mapKey = key, mapValue = value }++in keyText
@@ -0,0 +1,20 @@+{-+Builds a key-value record such that a List of them will be converted to a+homogeneous record by dhall-to-json and dhall-to-yaml.++Examples:++```+./keyValue Natural "foo" 2 = { mapKey = "foo", mapValue = 2 }++./keyValue Text "bar" "baz" = { mapKey = "bar", mapValue = "baz" }+```+-}++ let keyValue =+ λ(v : Type)+ → λ(key : Text)+ → λ(value : v)+ → { mapKey = key, mapValue = value }++in keyValue
@@ -0,0 +1,1 @@+{ keyText = ./keyText, keyValue = ./keyValue }
@@ -0,0 +1,20 @@+{-+Returns `True` if the supplied function returns `True` for all elements in the+`List`++Examples:++```+./all Natural Natural/even [ 2, 3, 5 ] = False++./all Natural Natural/even ([] : List Natural) = True+```+-}+ let all+ : ∀(a : Type) → (a → Bool) → List a → Bool+ = λ(a : Type)+ → λ(f : a → Bool)+ → λ(xs : List a)+ → List/fold a xs Bool (λ(x : a) → λ(r : Bool) → f x && r) True++in all
@@ -0,0 +1,20 @@+{-+Returns `True` if the supplied function returns `True` for any element in the+`List`++Examples:++```+./any Natural Natural/even [ 2, 3, 5 ] = True++./any Natural Natural/even ([] : List Natural) = False+```+-}+ let any+ : ∀(a : Type) → (a → Bool) → List a → Bool+ = λ(a : Type)+ → λ(f : a → Bool)+ → λ(xs : List a)+ → List/fold a xs Bool (λ(x : a) → λ(r : Bool) → f x || r) False++in any
@@ -0,0 +1,32 @@+{-+`build` is the inverse of `fold`++Examples:++```+./build+Text+( λ(list : Type)+→ λ(cons : Text → list → list)+→ λ(nil : list)+→ cons "ABC" (cons "DEF" nil)+)+= [ "ABC", "DEF" ]++./build+Text+( λ(list : Type)+→ λ(cons : Text → list → list)+→ λ(nil : list)+→ nil+)+= [] : List Text+```+-}+ let build+ : ∀(a : Type)+ → (∀(list : Type) → ∀(cons : a → list → list) → ∀(nil : list) → list)+ → List a+ = List/build++in build
@@ -0,0 +1,42 @@+{-+Concatenate a `List` of `List`s into a single `List`++Examples:++```+./concat Natural+[ [0, 1, 2]+, [3, 4]+, [5, 6, 7, 8]+]+= [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]++./concat Natural+( [ [] : List Natural+ , [] : List Natural+ , [] : List Natural+ ]+)+= [] : List Natural++./concat Natural ([] : List (List Natural)) = [] : List Natural+```+-}+ let concat+ : ∀(a : Type) → List (List a) → List a+ = λ(a : Type)+ → λ(xss : List (List a))+ → List/build+ a+ ( λ(list : Type)+ → λ(cons : a → list → list)+ → λ(nil : list)+ → List/fold+ (List a)+ xss+ list+ (λ(xs : List a) → λ(ys : list) → List/fold a xs list cons ys)+ nil+ )++in concat
@@ -0,0 +1,28 @@+{-+Transform a list by applying a function to each element and flattening the+results++Examples:++```+./concatMap Natural Natural (λ(n : Natural) → [n, n]) [2, 3, 5]+= [ 2, 2, 3, 3, 5, 5 ]++./concatMap Natural Natural (λ(n : Natural) → [n, n]) ([] : List Natural)+= [] : List Natural+```+-}+ let concatMap+ : ∀(a : Type) → ∀(b : Type) → (a → List b) → List a → List b+ = λ(a : Type)+ → λ(b : Type)+ → λ(f : a → List b)+ → λ(xs : List a)+ → List/build+ b+ ( λ(list : Type)+ → λ(cons : b → list → list)+ → List/fold a xs list (λ(x : a) → List/fold b (f x) list cons)+ )++in concatMap
@@ -0,0 +1,30 @@+{-+Only keep elements of the list where the supplied function returns `True`++Examples:++```+./filter Natural Natural/even [ 2, 3, 5 ]+= [ 2 ]++./filter Natural Natural/odd [ 2, 3, 5 ]+= [ 3, 5 ]+```+-}+ let filter+ : ∀(a : Type) → (a → Bool) → List a → List a+ = λ(a : Type)+ → λ(f : a → Bool)+ → λ(xs : List a)+ → List/build+ a+ ( λ(list : Type)+ → λ(cons : a → list → list)+ → List/fold+ a+ xs+ list+ (λ(x : a) → λ(xs : list) → if f x then cons x xs else xs)+ )++in filter
@@ -0,0 +1,46 @@+{-+`fold` is the primitive function for consuming `List`s++If you treat the list `[ x, y, z ]` as `cons x (cons y (cons z nil))`, then a+`fold` just replaces each `cons` and `nil` with something else++Examples:++```+ ./fold+ Natural+ [ 2, 3, 5 ]+ Natural+ (λ(x : Natural) → λ(y : Natural) → x + y)+ 0+= 10++ λ(nil : Natural)+→ ./fold+ Natural+ [ 2, 3, 5 ]+ Natural+ (λ(x : Natural) → λ(y : Natural) → x + y)+ nil+= λ(nil : Natural) → 2 + (3 + (5 + nil))++ λ(list : Type)+→ λ(cons : Natural → list → list)+→ λ(nil : list)+→ ./fold Natural [ 2, 3, 5 ] list cons nil+= λ(list : Type)+→ λ(cons : Natural → list → list)+→ λ(nil : list)+→ cons 2 (cons 3 (cons 5 nil))+```+-}+ let fold+ : ∀(a : Type)+ → List a+ → ∀(list : Type)+ → ∀(cons : a → list → list)+ → ∀(nil : list)+ → list+ = List/fold++in fold
@@ -0,0 +1,38 @@+{-+Build a list by calling the supplied function on all `Natural` numbers from `0`+up to but not including the supplied `Natural` number++Examples:++```+./generate 5 Bool Natural/even = [ True, False, True, False, True ]++./generate 0 Bool Natural/even = [] : List Bool+```+-}+ let generate+ : Natural → ∀(a : Type) → (Natural → a) → List a+ = λ(n : Natural)+ → λ(a : Type)+ → λ(f : Natural → a)+ → List/build+ a+ ( λ(list : Type)+ → λ(cons : a → list → list)+ → List/fold+ { index : Natural, value : {} }+ ( List/indexed+ {}+ ( List/build+ {}+ ( λ(list : Type)+ → λ(cons : {} → list → list)+ → Natural/fold n list (cons {=})+ )+ )+ )+ list+ (λ(x : { index : Natural, value : {} }) → cons (f x.index))+ )++in generate
@@ -0,0 +1,12 @@+{-+Retrieve the first element of the list++Examples:++```+./head Natural [ 0, 1, 2 ] = Some 0++./head Natural ([] : List Natural) = None Natural+```+-}+let head : ∀(a : Type) → List a → Optional a = List/head in head
@@ -0,0 +1,21 @@+{-+Tag each element of the list with its index++Examples:++```+./indexed Bool [ True, False, True ]+= [ { index = 0, value = True }+ , { index = 1, value = False }+ , { index = 2, value = True }+ ] : List { index : Natural, value : Bool }++./indexed Bool ([] : List Bool)+= [] : List { index : Natural, value : Bool }+```+-}+ let indexed+ : ∀(a : Type) → List a → List { index : Natural, value : a }+ = List/indexed++in indexed
@@ -0,0 +1,43 @@+{-+Generate a list of the specified length given a seed value and transition+function++Examples:++```+./iterate 10 Natural (λ(x : Natural) → x * 2) 1+= [ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 ]++./iterate 0 Natural (λ(x : Natural) → x * 2) 1+= [] : List Natural+```+-}+ let iterate+ : Natural → ∀(a : Type) → (a → a) → a → List a+ = λ(n : Natural)+ → λ(a : Type)+ → λ(f : a → a)+ → λ(x : a)+ → List/build+ a+ ( λ(list : Type)+ → λ(cons : a → list → list)+ → List/fold+ { index : Natural, value : {} }+ ( List/indexed+ {}+ ( List/build+ {}+ ( λ(list : Type)+ → λ(cons : {} → list → list)+ → Natural/fold n list (cons {=})+ )+ )+ )+ list+ ( λ(y : { index : Natural, value : {} })+ → cons (Natural/fold y.index a f x)+ )+ )++in iterate
@@ -0,0 +1,12 @@+{-+Retrieve the last element of the list++Examples:++```+./last Natural [ 0, 1, 2 ] = Some 2++./last Natural ([] : List Natural) = None Natural+```+-}+let last : ∀(a : Type) → List a → Optional a = List/last in last
@@ -0,0 +1,12 @@+{-+Returns the number of elements in a list++Examples:++```+./length Natural [ 0, 1, 2 ] = 3++./length Natural ([] : List Natural) = 0+```+-}+let length : ∀(a : Type) → List a → Natural = List/length in length
@@ -0,0 +1,27 @@+{-+Transform a list by applying a function to each element++Examples:++```+./map Natural Bool Natural/even [ 2, 3, 5 ]+= [ True, False, False ]++./map Natural Bool Natural/even ([] : List Natural)+= [] : List Bool+```+-}+ let map+ : ∀(a : Type) → ∀(b : Type) → (a → b) → List a → List b+ = λ(a : Type)+ → λ(b : Type)+ → λ(f : a → b)+ → λ(xs : List a)+ → List/build+ b+ ( λ(list : Type)+ → λ(cons : b → list → list)+ → List/fold a xs list (λ(x : a) → cons (f x))+ )++in map
@@ -0,0 +1,16 @@+{-+Returns `True` if the `List` is empty and `False` otherwise++Examples:++```+./null Natural [ 0, 1, 2 ] = False++./null Natural ([] : List Natural) = True+```+-}+ let null+ : ∀(a : Type) → List a → Bool+ = λ(a : Type) → λ(xs : List a) → Natural/isZero (List/length a xs)++in null
@@ -0,0 +1,39 @@+{ all =+ ./all+, any =+ ./any+, build =+ ./build+, concat =+ ./concat+, concatMap =+ ./concatMap+, filter =+ ./filter+, fold =+ ./fold+, generate =+ ./generate+, head =+ ./head+, indexed =+ ./indexed+, iterate =+ ./iterate+, last =+ ./last+, length =+ ./length+, map =+ ./map+, null =+ ./null+, replicate =+ ./replicate+, reverse =+ ./reverse+, shifted =+ ./shifted+, unzip =+ ./unzip+}
@@ -0,0 +1,24 @@+{-+Build a list by copying the given element the specified number of times++Examples:++```+./replicate 9 Natural 1 = [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ]++./replicate 0 Natural 1 = [] : List Natural+```+-}+ let replicate+ : Natural → ∀(a : Type) → a → List a+ = λ(n : Natural)+ → λ(a : Type)+ → λ(x : a)+ → List/build+ a+ ( λ(list : Type)+ → λ(cons : a → list → list)+ → Natural/fold n list (cons x)+ )++in replicate
@@ -0,0 +1,12 @@+{-+Reverse a list++Examples:++```+./reverse Natural [ 0, 1, 2 ] = [ 2, 1, 0 ] : List Natural++./reverse Natural ([] : List Natural) = [] : List Natural+```+-}+let reverse : ∀(a : Type) → List a → List a = List/reverse in reverse
@@ -0,0 +1,90 @@+{-+Combine a `List` of `List`s, offsetting the `index` of each element by the+number of elements in preceding lists++Examples:++```+./shifted+Bool+[ [ { index = 0, value = True }+ , { index = 1, value = True }+ , { index = 2, value = True }+ ]+, [ { index = 0, value = False }+ , { index = 1, value = False }+ ]+, [ { index = 0, value = True }+ , { index = 1, value = True }+ , { index = 2, value = True }+ , { index = 3, value = True }+ ]+]+= [ { index = 0, value = True }+ , { index = 1, value = True }+ , { index = 2, value = True }+ , { index = 3, value = False }+ , { index = 4, value = False }+ , { index = 5, value = True }+ , { index = 6, value = True }+ , { index = 7, value = True }+ , { index = 8, value = True }+ ]++./shifted Bool ([] : List (List { index : Natural, value : Bool }))+= [] : List { index : Natural, value : Bool }+```+-}+ let shifted+ : ∀(a : Type)+ → List (List { index : Natural, value : a })+ → List { index : Natural, value : a }+ = λ(a : Type)+ → λ(kvss : List (List { index : Natural, value : a }))+ → List/build+ { index : Natural, value : a }+ ( λ(list : Type)+ → λ(cons : { index : Natural, value : a } → list → list)+ → λ(nil : list)+ → let result =+ List/fold+ (List { index : Natural, value : a })+ kvss+ { count : Natural, diff : Natural → list }+ ( λ(kvs : List { index : Natural, value : a })+ → λ(y : { count : Natural, diff : Natural → list })+ → let length =+ List/length+ { index : Natural, value : a }+ kvs+ + in { count =+ y.count + length+ , diff =+ λ(n : Natural)+ → List/fold+ { index : Natural, value : a }+ kvs+ list+ ( λ ( kvOld+ : { index : Natural, value : a }+ )+ → λ(z : list)+ → let kvNew =+ { index =+ kvOld.index + n+ , value =+ kvOld.value+ }+ + in cons kvNew z+ )+ (y.diff (n + length))+ }+ )+ { count = 0, diff = λ(_ : Natural) → nil }+ + in result.diff 0+ )++in shifted
@@ -0,0 +1,55 @@+{-+Unzip a `List` into two separate `List`s++Examples:++```+./unzip+Text+Bool+( [ { _1 = "ABC", _2 = True }+ , { _1 = "DEF", _2 = False }+ , { _1 = "GHI", _2 = True }+ ]+)+= { _1 = [ "ABC", "DEF", "GHI" ]+ , _2 = [ True, False, True ]+ }++./unzip Text Bool ([] : List { _1 : Text, _2 : Bool })+= { _1 = [] : List Text, _2 = [] : List Bool }+```+-}+ let unzip+ : ∀(a : Type)+ → ∀(b : Type)+ → List { _1 : a, _2 : b }+ → { _1 : List a, _2 : List b }+ = λ(a : Type)+ → λ(b : Type)+ → λ(xs : List { _1 : a, _2 : b })+ → { _1 =+ List/build+ a+ ( λ(list : Type)+ → λ(cons : a → list → list)+ → List/fold+ { _1 : a, _2 : b }+ xs+ list+ (λ(x : { _1 : a, _2 : b }) → cons x._1)+ )+ , _2 =+ List/build+ b+ ( λ(list : Type)+ → λ(cons : b → list → list)+ → List/fold+ { _1 : a, _2 : b }+ xs+ list+ (λ(x : { _1 : a, _2 : b }) → cons x._2)+ )+ }++in unzip
@@ -0,0 +1,39 @@+{-+Any function `f` that is a `Monoid` must satisfy the following law:++```+t : Type+f : ./Monoid t+xs : List (List t)++f (./List/concat t xs) = f (./map (List t) t f xs)+```++Examples:++```+./Bool/and+ : ./Monoid Bool+./Bool/or+ : ./Monoid Bool+./Bool/even+ : ./Monoid Bool+./Bool/odd+ : ./Monoid Bool+./List/concat+ : ∀(a : Type) → ./Monoid (List a)+./List/shifted+ : ∀(a : Type) → ./Monoid (List { index : Natural, value : a })+./Natural/sum+ : ./Monoid Natural+./Natural/product+ : ./Monoid Natural+./Optional/head+ : ∀(a : Type) → ./Monoid (Optional a)+./Optional/last+ : ∀(a : Type) → ./Monoid (Optional a)+./Text/concat+ : ./Monoid Text+```+-}+let Monoid : ∀(m : Type) → Type = λ(m : Type) → List m → m in Monoid
@@ -0,0 +1,33 @@+{-+`build` is the inverse of `fold`++Examples:++```+./build+( λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ succ (succ (succ zero))+)+= 3++./build+( λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ zero+)+= 0+```+-}+ let build+ : ( ∀(natural : Type)+ → ∀(succ : natural → natural)+ → ∀(zero : natural)+ → natural+ )+ → Natural+ = Natural/build++in build
@@ -0,0 +1,36 @@+{-+Generate a list of numbers from `0` up to but not including the specified+number++Examples:++```+./enumerate 10 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]++./enumerate 0 = [] : List Natural+```+-}+ let enumerate+ : Natural → List Natural+ = λ(n : Natural)+ → List/build+ Natural+ ( λ(list : Type)+ → λ(cons : Natural → list → list)+ → List/fold+ { index : Natural, value : {} }+ ( List/indexed+ {}+ ( List/build+ {}+ ( λ(list : Type)+ → λ(cons : {} → list → list)+ → Natural/fold n list (cons {=})+ )+ )+ )+ list+ (λ(x : { index : Natural, value : {} }) → cons x.index)+ )++in enumerate
@@ -0,0 +1,12 @@+{-+Returns `True` if a number if even and returns `False` otherwise++Examples:++```+./even 3 = False++./even 0 = True+```+-}+let even : Natural → Bool = Natural/even in even
@@ -0,0 +1,33 @@+{-+`fold` is the primitive function for consuming `Natural` numbers++If you treat the number `3` as `succ (succ (succ zero))` then a `fold` just+replaces each `succ` and `zero` with something else++Examples:++```+./fold 3 Natural (λ(x : Natural) → 5 * x) 1 = 125++λ(zero : Natural) → ./fold 3 Natural (λ(x : Natural) → 5 * x) zero+= λ(zero : Natural) → 5 * (5 * (5 * zero))++ λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ ./fold 3 natural succ zero+= λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ succ (succ (succ zero))+```+-}+ let fold+ : Natural+ → ∀(natural : Type)+ → ∀(succ : natural → natural)+ → ∀(zero : natural)+ → natural+ = Natural/fold++in fold
@@ -0,0 +1,12 @@+{-+Returns `True` if a number is `0` and returns `False` otherwise++Examples:++```+./isZero 2 = False++./isZero 0 = True+```+-}+let isZero : Natural → Bool = Natural/isZero in isZero
@@ -0,0 +1,12 @@+{-+Returns `True` if a number is odd and returns `False` otherwise++Examples:++```+./odd 3 = True++./odd 0 = False+```+-}+let odd : Natural → Bool = Natural/odd in odd
@@ -0,0 +1,23 @@+{ build =+ ./build+, enumerate =+ ./enumerate+, even =+ ./even+, fold =+ ./fold+, isZero =+ ./isZero+, odd =+ ./odd+, product =+ ./product+, sum =+ ./sum+, show =+ ./show+, toDouble =+ ./toDouble+, toInteger =+ ./toInteger+}
@@ -0,0 +1,22 @@+{-+Multiply all the numbers in a `List`++Examples:++```+./product [ 2, 3, 5 ] = 30++./product ([] : List Natural) = 1+```+-}+ let product+ : List Natural → Natural+ = λ(xs : List Natural)+ → List/fold+ Natural+ xs+ Natural+ (λ(l : Natural) → λ(r : Natural) → l * r)+ 1++in product
@@ -0,0 +1,13 @@+{-+Render a `Natural` number as `Text` using the same representation as Dhall+source code (i.e. a decimal number)++Examples:++```+./show 3 = "3"++./show 0 = "0"+```+-}+let show : Natural → Text = Natural/show in show
@@ -0,0 +1,22 @@+{-+Add all the numbers in a `List`++Examples:++```+./sum [ 2, 3, 5 ] = 10++./sum ([] : List Natural) = 0+```+-}+ let sum+ : List Natural → Natural+ = λ(xs : List Natural)+ → List/fold+ Natural+ xs+ Natural+ (λ(l : Natural) → λ(r : Natural) → l + r)+ 0++in sum
@@ -0,0 +1,16 @@+{-+Convert a `Natural` number to the corresponding `Double`++Examples:++```+./toDouble 3 = 3.0++./toDouble 0 = 0.0+```+-}+ let toDouble+ : Natural → Double+ = λ(n : Natural) → Integer/toDouble (Natural/toInteger n)++in toDouble
@@ -0,0 +1,12 @@+{-+Convert a `Natural` number to the corresponding `Integer`++Examples:++```+./toInteger 3 = +3++./toInteger 0 = +0+```+-}+let toInteger : Natural → Integer = Natural/toInteger in toInteger
@@ -0,0 +1,20 @@+{-+Returns `False` if the supplied function returns `False` for a present element+and `True` otherwise:++Examples:++```+./all Natural Natural/even (Some 3) = False++./all Natural Natural/even (None Natural) = True+```+-}+ let all+ : ∀(a : Type) → (a → Bool) → Optional a → Bool+ = λ(a : Type)+ → λ(f : a → Bool)+ → λ(xs : Optional a)+ → Optional/fold a xs Bool f True++in all
@@ -0,0 +1,20 @@+{-+Returns `True` if the supplied function returns `True` for a present element and+`False` otherwise++Examples:++```+./any Natural Natural/even (Some 2) = True++./any Natural Natural/even (None Natural) = False+```+-}+ let any+ : ∀(a : Type) → (a → Bool) → Optional a → Bool+ = λ(a : Type)+ → λ(f : a → Bool)+ → λ(xs : Optional a)+ → Optional/fold a xs Bool f False++in any
@@ -0,0 +1,36 @@+{-+`build` is the inverse of `fold`++Examples:++```+./build+Natural+( λ(optional : Type)+→ λ(some : Natural → optional)+→ λ(none : optional)+→ some 1+)+= Some 1++./build+Natural+( λ(optional : Type)+→ λ(some : Natural → optional)+→ λ(none : optional)+→ none+)+= None Natural+```+-}+ let build+ : ∀(a : Type)+ → ( ∀(optional : Type)+ → ∀(some : a → optional)+ → ∀(none : optional)+ → optional+ )+ → Optional a+ = Optional/build++in build
@@ -0,0 +1,28 @@+{-+Flatten two `Optional` layers into a single `Optional` layer++Examples:++```+./concat Natural (Some (Some 1))+= Some 1++./concat Natural (Some (None Natural))+= None Natural++./concat Natural (None (Optional Natural))+= None Natural+```+-}+ let concat+ : ∀(a : Type) → Optional (Optional a) → Optional a+ = λ(a : Type)+ → λ(x : Optional (Optional a))+ → Optional/fold+ (Optional a)+ x+ (Optional a)+ (λ(y : Optional a) → y)+ (None a)++in concat
@@ -0,0 +1,32 @@+{-+Only keep an `Optional` element if the supplied function returns `True`++Examples:++```+./filter Natural Natural/even (Some 2)+= Some 2++./filter Natural Natural/odd (Some 2)+= None Natural+```+-}+ let filter+ : ∀(a : Type) → (a → Bool) → Optional a → Optional a+ = λ(a : Type)+ → λ(f : a → Bool)+ → λ(xs : Optional a)+ → Optional/build+ a+ ( λ(optional : Type)+ → λ(some : a → optional)+ → λ(none : optional)+ → Optional/fold+ a+ xs+ optional+ (λ(x : a) → if f x then some x else none)+ none+ )++in filter
@@ -0,0 +1,21 @@+{-+`fold` is the primitive function for consuming `Optional` values++Examples:++```+./fold Natural (Some 2) Natural (λ(x : Natural) → x) 0 = 2++./fold Natural (None Natural) Natural (λ(x : Natural) → x) 0 = 0+```+-}+ let fold+ : ∀(a : Type)+ → Optional a+ → ∀(optional : Type)+ → ∀(some : a → optional)+ → ∀(none : optional)+ → optional+ = Optional/fold++in fold
@@ -0,0 +1,28 @@+{-+Returns the first non-empty `Optional` value in a `List`++Examples:++```+./head Natural [ None Natural, Some 1, Some 2 ] = Some 1++./head Natural [ None Natural, None Natural ] = None Natural++./head Natural ([] : List (Optional Natural)) = None Natural+```+-}+ let head+ : ∀(a : Type) → List (Optional a) → Optional a+ = λ(a : Type)+ → λ(xs : List (Optional a))+ → List/fold+ (Optional a)+ xs+ (Optional a)+ ( λ(l : Optional a)+ → λ(r : Optional a)+ → Optional/fold a l (Optional a) (λ(x : a) → Some x) r+ )+ (None a)++in head
@@ -0,0 +1,28 @@+{-+Returns the last non-empty `Optional` value in a `List`++Examples:++```+./last Natural [ None Natural, Some 1, Some 2 ] = Some 2++./last Natural [ None Natural, None Natural ] = None Natural++./last Natural ([] : List (Optional Natural)) = None Natural+```+-}+ let last+ : ∀(a : Type) → List (Optional a) → Optional a+ = λ(a : Type)+ → λ(xs : List (Optional a))+ → List/fold+ (Optional a)+ xs+ (Optional a)+ ( λ(l : Optional a)+ → λ(r : Optional a)+ → Optional/fold a r (Optional a) (λ(x : a) → Some x) l+ )+ (None a)++in last
@@ -0,0 +1,18 @@+{-+Returns `1` if the `Optional` value is present and `0` if the value is absent++Examples:++```+./length Natural (Some 2) = 1++./length Natural (None Natural) = 0+```+-}+ let length+ : ∀(a : Type) → Optional a → Natural+ = λ(a : Type)+ → λ(xs : Optional a)+ → Optional/fold a xs Natural (λ(_ : a) → 1) 0++in length
@@ -0,0 +1,20 @@+{-+Transform an `Optional` value with a function++Examples:++```+./map Natural Bool Natural/even (Some 3) = Some False++./map Natural Bool Natural/even (None Natural) = None Bool+```+-}+ let map+ : ∀(a : Type) → ∀(b : Type) → (a → b) → Optional a → Optional b+ = λ(a : Type)+ → λ(b : Type)+ → λ(f : a → b)+ → λ(o : Optional a)+ → Optional/fold a o (Optional b) (λ(x : a) → Some (f x)) (None b)++in map
@@ -0,0 +1,18 @@+{-+Returns `True` if the `Optional` value is absent and `False` if present++Examples:++```+./null Natural (Some 2) = False++./null Natural (None Natural) = True+```+-}+ let null+ : ∀(a : Type) → Optional a → Bool+ = λ(a : Type)+ → λ(xs : Optional a)+ → Optional/fold a xs Bool (λ(_ : a) → False) True++in null
@@ -0,0 +1,27 @@+{ all =+ ./all+, any =+ ./any+, build =+ ./build+, concat =+ ./concat+, filter =+ ./filter+, fold =+ ./fold+, head =+ ./head+, last =+ ./last+, length =+ ./length+, map =+ ./map+, null =+ ./null+, toList =+ ./toList+, unzip =+ ./unzip+}
@@ -0,0 +1,18 @@+{-+Convert an `Optional` value into the equivalent `List`++Examples:++```+./toList Natural (Some 1) = [ 1 ]++./toList Natural (None Natural) = [] : List Natural+```+-}+ let toList+ : ∀(a : Type) → Optional a → List a+ = λ(a : Type)+ → λ(o : Optional a)+ → Optional/fold a o (List a) (λ(x : a) → [ x ] : List a) ([] : List a)++in toList
@@ -0,0 +1,38 @@+{-+Unzip an `Optional` value into two separate `Optional` values++Examples:++```+./unzip Text Bool (Some { _1 = "ABC", _2 = True })+= { _1 = Some "ABC", _2 = Some True }++./unzip Text Bool (None { _1 : Text, _2 : Bool })+= { _1 = None Text, _2 = None Bool }+```+-}+ let unzip+ : ∀(a : Type)+ → ∀(b : Type)+ → Optional { _1 : a, _2 : b }+ → { _1 : Optional a, _2 : Optional b }+ = λ(a : Type)+ → λ(b : Type)+ → λ(xs : Optional { _1 : a, _2 : b })+ → { _1 =+ Optional/fold+ { _1 : a, _2 : b }+ xs+ (Optional a)+ (λ(x : { _1 : a, _2 : b }) → Some x._1)+ (None a)+ , _2 =+ Optional/fold+ { _1 : a, _2 : b }+ xs+ (Optional b)+ (λ(x : { _1 : a, _2 : b }) → Some x._2)+ (None b)+ }++in unzip
@@ -0,0 +1,17 @@+{-+Concatenate all the `Text` values in a `List`++Examples:++```+./concat [ "ABC", "DEF", "GHI" ] = "ABCDEFGHI"++./concat ([] : List Text) = ""+```+-}+ let concat+ : List Text → Text+ = λ(xs : List Text)+ → List/fold Text xs Text (λ(x : Text) → λ(y : Text) → x ++ y) ""++in concat
@@ -0,0 +1,21 @@+{-+Transform each value in a `List` into `Text` and concatenate the result++Examples:++```+./concatMap Natural (λ(n : Natural) → "${Natural/show n} ") [ 0, 1, 2 ]+= "0 1 2 "++./concatMap Natural (λ(n : Natural) → "${Natural/show n} ") ([] : List Natural)+= ""+```+-}+ let concatMap+ : ∀(a : Type) → (a → Text) → List a → Text+ = λ(a : Type)+ → λ(f : a → Text)+ → λ(xs : List a)+ → List/fold a xs Text (λ(x : a) → λ(y : Text) → f x ++ y) ""++in concatMap
@@ -0,0 +1,47 @@+{-+Transform each value in a `List` to `Text` and then concatenate them with a+separator in between each value++Examples:++```+./concatMapSep ", " Natural Natural/show [ 0, 1, 2 ] = "0, 1, 2"++./concatMapSep ", " Natural Natural/show ([] : List Natural) = ""+```+-}+ let concatMapSep+ : ∀(separator : Text) → ∀(a : Type) → (a → Text) → List a → Text+ = λ(separator : Text)+ → λ(a : Type)+ → λ(f : a → Text)+ → λ(elements : List a)+ → let status =+ List/fold+ a+ elements+ < Empty : {} | NonEmpty : Text >+ ( λ(element : a)+ → λ(status : < Empty : {} | NonEmpty : Text >)+ → merge+ { Empty =+ λ(_ : {}) → < NonEmpty = f element | Empty : {} >+ , NonEmpty =+ λ(result : Text)+ → < NonEmpty =+ f element ++ separator ++ result+ | Empty :+ {}+ >+ }+ status+ : < Empty : {} | NonEmpty : Text >+ )+ < Empty = {=} | NonEmpty : Text >+ + in merge+ { Empty = λ(_ : {}) → "", NonEmpty = λ(result : Text) → result }+ status+ : Text++in concatMapSep
@@ -0,0 +1,44 @@+{-+Concatenate a `List` of `Text` values with a separator in between each value++Examples:++```+./concatSep ", " [ "ABC", "DEF", "GHI" ] = "ABC, DEF, GHI"++./concatSep ", " ([] : List Text) = ""+```+-}+ let concatSep+ : ∀(separator : Text) → ∀(elements : List Text) → Text+ = λ(separator : Text)+ → λ(elements : List Text)+ → let status =+ List/fold+ Text+ elements+ < Empty : {} | NonEmpty : Text >+ ( λ(element : Text)+ → λ(status : < Empty : {} | NonEmpty : Text >)+ → merge+ { Empty =+ λ(_ : {}) → < NonEmpty = element | Empty : {} >+ , NonEmpty =+ λ(result : Text)+ → < NonEmpty =+ element ++ separator ++ result+ | Empty :+ {}+ >+ }+ status+ : < Empty : {} | NonEmpty : Text >+ )+ < Empty = {=} | NonEmpty : Text >+ + in merge+ { Empty = λ(_ : {}) → "", NonEmpty = λ(result : Text) → result }+ status+ : Text++in concatSep
@@ -0,0 +1,11 @@+{ concat =+ ./concat+, concatMap =+ ./concatMap+, concatMapSep =+ ./concatMapSep+, concatSep =+ ./concatSep+, show =+ ./show+}
@@ -0,0 +1,13 @@+{-+Render a `Text` literal as its own representation as Dhall source code (i.e. a+double-quoted string literal)++Examples:++```+./show "ABC" = "\"ABC\""++./show "\u0000 \$ \\ \n \u263a" = "\"\\u0000 \\u0024 \\\\ \\n ☺\""+```+-}+let show : Text → Text = Text/show in show
@@ -0,0 +1,19 @@+{ `Bool` =+ ./Bool/package.dhall+, `Double` =+ ./Double/package.dhall+, Function =+ ./Function/package.dhall+, `Integer` =+ ./Integer/package.dhall+, `List` =+ ./List/package.dhall+, `Natural` =+ ./Natural/package.dhall+, `Optional` =+ ./Optional/package.dhall+, JSON =+ ./JSON/package.dhall+, `Text` =+ ./Text/package.dhall+}
@@ -0,0 +1,1 @@+{ foo = 1, bar = True }
@@ -0,0 +1,1 @@+{ bar = True, foo = 1 }
@@ -0,0 +1,1 @@+env:UNSET1 as Text ? env:UNSET2 ? missing ? env:UNSET3
@@ -0,0 +1,1 @@+env:UNSET ? missing
@@ -0,0 +1,1 @@+../data/cycle.dhall
@@ -0,0 +1,1 @@+missing
@@ -0,0 +1,13 @@+{- The following remote import attempts to import an environment variable, which+ must be disallowed by the referential sanity check++ One reason for doing this is to protect against remote imports exfiltrating+ environment variables (such as via custom headers). Only referentially+ opaque imports (i.e. local imports) have permission to refer to other+ referentially opaque imports in order to protect against this attack.++ The referential sanity check also ensures that remote imports are+ referentially transparent. Or in other words, any import that is globally+ addressable must have a meaning that is not context-sensitive.+-}+https://raw.githubusercontent.com/dhall-lang/dhall-lang/master/tests/import/data/referentiallyOpaque.dhall
@@ -0,0 +1,1 @@+env:UNSET1 as Text ? env:UNSET2 ? missing ? env:UNSET3 ? 2
@@ -0,0 +1,1 @@+2
@@ -0,0 +1,1 @@+env:UNSET ? 3
@@ -0,0 +1,1 @@+3
@@ -0,0 +1,1 @@+4 ? missing
@@ -0,0 +1,1 @@+4
@@ -0,0 +1,1 @@+../data/example.txt as Text
@@ -0,0 +1,3 @@+''+Hello, world!+''
@@ -0,0 +1,5 @@+{ example0 =+ ../data/fieldOrder/1.dhall sha256:d8ae15ff5a40ee7973a23ba75cd98f8e39d14aeb6e1e3f18aadb092fcb825194+, example1 =+ ../data/fieldOrder/2.dhall sha256:d8ae15ff5a40ee7973a23ba75cd98f8e39d14aeb6e1e3f18aadb092fcb825194+}
@@ -0,0 +1,1 @@+{ example0 = { bar = True, foo = 1 }, example1 = { bar = True, foo = 1 } }
@@ -0,0 +1,1 @@+{ x = "foo" }.x
@@ -0,0 +1,1 @@+"foo"
@@ -0,0 +1,1 @@+< Foo : Text | Bar : Natural >.Foo
@@ -0,0 +1,1 @@+λ(Foo : Text) → < Foo = Foo | Bar : Natural >
@@ -0,0 +1,1 @@+{ foo : { bar : Text } } ⩓ { foo : { baz : Bool }, qux : Integer }
@@ -0,0 +1,1 @@+{ foo : { bar : Text, baz : Bool }, qux : Integer }
@@ -0,0 +1,1 @@+{ foo : { bar : Text } } //\\ { foo : { baz : Bool }, qux : Integer }
@@ -0,0 +1,1 @@+{ foo : { bar : Text, baz : Bool }, qux : Integer }
@@ -0,0 +1,1 @@+{ foo = 1, bar = "ABC" } // { baz = True }
@@ -0,0 +1,1 @@+{ bar = "ABC", baz = True, foo = 1 }
@@ -0,0 +1,1 @@+{ x = 1, y = True, z = "ABC" }.{ x, y }
@@ -0,0 +1,1 @@+{ x = 1, y = True }
@@ -0,0 +1,9 @@+-- Verify that an implementation is processing escape sequences correctly++''+''${+'''+$+"+\+''
@@ -0,0 +1,1 @@+"\${\n''\n\$\n\"\n\\\n"
@@ -0,0 +1,15 @@+{- The indent is computed as the minimum number of leading spaces over all lines+ in a multi-line literal, including the line right before the closing quotes.+ In this case, there are three lines:++ * The first line containing " foo" with two leading spaces+ * The second line containing " bar" with two leading spaces+ * The third line containing " " with two leading spaces++ Therefore we strip two leading spaces from all three lines+-}++''+ foo+ bar+ ''
@@ -0,0 +1,1 @@+"foo\nbar\n"
@@ -0,0 +1,7 @@+-- Non-trivial example that combines several multi-line literal features++λ(x : Text) → ''+ ${x} baz+ bar+ foo+ ''
@@ -0,0 +1,1 @@+λ(x : Text) → "${x} baz\n bar\n foo\n "
@@ -0,0 +1,16 @@+{- The indent is computed as the minimum number of leading spaces over all lines+ in a multi-line literal, including the line right before the closing quotes.+ In this case, there are three lines:++ * The first line containing " foo" with two leading spaces+ * The second line containing " bar" with two leading spaces+ * The third line containing "" with zero leading spaces++ Since the last line has zero leading spaces, the minimum number of leading+ spaces over all three lines is zero, so we don't strip any spaces.+-}++''+ foo+ bar+''
@@ -0,0 +1,1 @@+" foo\n bar\n"
@@ -0,0 +1,9 @@+{- This example verifies that an implementation is correctly breaking leading+ spaces at interpolated expressions. The first line has the fewest number of+ leading spaces (2) due to the interruption by the interpolated expression.+-}++''+${Natural/show 1} foo+ bar+''
@@ -0,0 +1,1 @@+"${Natural/show 1} foo\n bar\n"
@@ -0,0 +1,8 @@+{- A comment within the interior of a multi-line literal counts as part of the+ literal+-}++''+-- Hello+{- world -}+''
@@ -0,0 +1,1 @@+"-- Hello\n{- world -}\n"
@@ -0,0 +1,6 @@+{- This is how you encode a multi-line literal that contains no newlines++ The leading newline is stripped+-}+''+foo''
@@ -0,0 +1,1 @@+"foo"
@@ -0,0 +1,7 @@+{- Verify that an implementation is correctly preserving newlines in the+ corresponding double-quoted literal+-}++''+foo+bar''
@@ -0,0 +1,1 @@+"foo\nbar"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.and [ True, False, True ]
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.and ([] : List Bool)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,2 @@+(../../../../../../Prelude/package.dhall).`Bool`.build +(λ(bool : Type) → λ(true : bool) → λ(false : bool) → true)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,2 @@+(../../../../../../Prelude/package.dhall).`Bool`.build +(λ(bool : Type) → λ(true : bool) → λ(false : bool) → false)
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.even [ False, True, False ]
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.even [ False, True ]
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.even [ False ]
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.even ([] : List Bool)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.fold True Natural 0 1
@@ -0,0 +1,1 @@+0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.fold False Natural 0 1
@@ -0,0 +1,1 @@+1
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.not True
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.not False
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.odd [ True, False, True ]
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.odd [ True, False ]
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.odd [ True ]
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.odd ([] : List Bool)
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.or [ True, False, True ]
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.or ([] : List Bool)
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.show True
@@ -0,0 +1,1 @@+"True"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Bool`.show False
@@ -0,0 +1,1 @@+"False"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Double`.show -3.1
@@ -0,0 +1,1 @@+"-3.1"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Double`.show 0.4
@@ -0,0 +1,1 @@+"0.4"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Integer`.show -3
@@ -0,0 +1,1 @@+"-3"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Integer`.show +0
@@ -0,0 +1,1 @@+"+0"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Integer`.toDouble -3
@@ -0,0 +1,1 @@+-3.0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Integer`.toDouble +2
@@ -0,0 +1,1 @@+2.0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.all Natural Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.all Natural Natural/even ([] : List Natural)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.any Natural Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.any Natural Natural/even ([] : List Natural)
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,7 @@+(../../../../../../Prelude/package.dhall).`List`.build+Text+( λ(list : Type)+→ λ(cons : Text → list → list)+→ λ(nil : list)+→ cons "ABC" (cons "DEF" nil)+)
@@ -0,0 +1,1 @@+[ "ABC", "DEF" ]
@@ -0,0 +1,7 @@+(../../../../../../Prelude/package.dhall).`List`.build+Text+( λ(list : Type)+→ λ(cons : Text → list → list)+→ λ(nil : list)+→ nil+)
@@ -0,0 +1,1 @@+[] : List Text
@@ -0,0 +1,5 @@+(../../../../../../Prelude/package.dhall).`List`.concat Natural+[ [ 0, 1, 2 ]+, [ 3, 4 ]+, [ 5, 6, 7, 8 ]+]
@@ -0,0 +1,1 @@+[ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
@@ -0,0 +1,5 @@+(../../../../../../Prelude/package.dhall).`List`.concat Natural+[ [] : List Natural+, [] : List Natural+, [] : List Natural+]
@@ -0,0 +1,1 @@+[] : List Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.concatMap Natural Natural (λ(n : Natural) → [ n, n ]) [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+[ 2, 2, 3, 3, 5, 5 ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.concatMap Natural Natural (λ(n : Natural) → [ n, n ]) ([] : List Natural)
@@ -0,0 +1,1 @@+[] : List Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.filter Natural Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+[ 2 ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.filter Natural Natural/odd [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+[ 3, 5 ]
@@ -0,0 +1,6 @@+(../../../../../../Prelude/package.dhall).`List`.fold+Natural+[ 2, 3, 5 ]+Natural+(λ(x : Natural) → λ(y : Natural) → x + y)+0
@@ -0,0 +1,1 @@+10
@@ -0,0 +1,7 @@+ λ(nil : Natural)+→ (../../../../../../Prelude/package.dhall).`List`.fold+ Natural+ [ 2, 3, 5 ]+ Natural+ (λ(x : Natural) → λ(y : Natural) → x + y)+ nil
@@ -0,0 +1,1 @@+λ(nil : Natural) → 2 + (3 + (5 + nil))
@@ -0,0 +1,4 @@+ λ(list : Type)+→ λ(cons : Natural → list → list)+→ λ(nil : list)+→ (../../../../../../Prelude/package.dhall).`List`.fold Natural [ 2, 3, 5 ] list cons nil
@@ -0,0 +1,4 @@+ λ(list : Type)+→ λ(cons : Natural → list → list)+→ λ(nil : list)+→ cons 2 (cons 3 (cons 5 nil))
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.generate 5 Bool Natural/even
@@ -0,0 +1,1 @@+[ True, False, True, False, True ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.generate 0 Bool Natural/even
@@ -0,0 +1,1 @@+[] : List Bool
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.head Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Some 0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.head Natural ([] : List Natural)
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.indexed Bool [ True, False, True ]
@@ -0,0 +1,4 @@+[ { index = 0, value = True }+, { index = 1, value = False }+, { index = 2, value = True }+]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.indexed Bool ([] : List Bool)
@@ -0,0 +1,1 @@+[] : List { index : Natural, value : Bool }
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.iterate 10 Natural (λ(x : Natural) → x * 2) 1
@@ -0,0 +1,1 @@+[ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.iterate 0 Natural (λ(x : Natural) → x * 2) 1
@@ -0,0 +1,1 @@+[] : List Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.last Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Some 2
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.last Natural ([] : List Natural)
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.length Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+3
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.length Natural ([] : List Natural)
@@ -0,0 +1,1 @@+0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.map Natural Bool Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+[ True, False, False ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.map Natural Bool Natural/even ([] : List Natural)
@@ -0,0 +1,1 @@+[] : List Bool
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.null Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.null Natural ([] : List Natural)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.replicate 9 Natural 1
@@ -0,0 +1,1 @@+[ 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.replicate 0 Natural 1
@@ -0,0 +1,1 @@+[] : List Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.reverse Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+[ 2, 1, 0 ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.reverse Natural ([] : List Natural)
@@ -0,0 +1,1 @@+[] : List Natural
@@ -0,0 +1,15 @@+(../../../../../../Prelude/package.dhall).`List`.shifted+Bool+[ [ { index = 0, value = True }+ , { index = 1, value = True }+ , { index = 2, value = False }+ ]+, [ { index = 0, value = False }+ , { index = 1, value = False }+ ]+, [ { index = 0, value = True }+ , { index = 1, value = True }+ , { index = 2, value = True }+ , { index = 3, value = True }+ ]+]
@@ -0,0 +1,10 @@+[ { index = 0, value = True }+, { index = 1, value = True }+, { index = 2, value = False }+, { index = 3, value = False }+, { index = 4, value = False }+, { index = 5, value = True }+, { index = 6, value = True }+, { index = 7, value = True }+, { index = 8, value = True }+]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.shifted Bool ([] : List (List { index : Natural, value : Bool }))
@@ -0,0 +1,1 @@+[] : List { index : Natural, value : Bool }
@@ -0,0 +1,7 @@+(../../../../../../Prelude/package.dhall).`List`.unzip+Text+Bool+[ { _1 = "ABC", _2 = True }+, { _1 = "DEF", _2 = False }+, { _1 = "GHI", _2 = True }+]
@@ -0,0 +1,1 @@+{ _1 = [ "ABC", "DEF", "GHI" ], _2 = [ True, False, True ] }
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`List`.unzip Text Bool ([] : List { _1 : Text, _2 : Bool })
@@ -0,0 +1,1 @@+{ _1 = [] : List Text, _2 = [] : List Bool }
@@ -0,0 +1,6 @@+(../../../../../../Prelude/package.dhall).`Natural`.build+( λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ succ (succ (succ zero))+)
@@ -0,0 +1,1 @@+3
@@ -0,0 +1,6 @@+(../../../../../../Prelude/package.dhall).`Natural`.build+( λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ zero+)
@@ -0,0 +1,1 @@+0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.enumerate 10
@@ -0,0 +1,1 @@+[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.enumerate 0
@@ -0,0 +1,1 @@+[] : List Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.even 3
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.even 0
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.fold 3 Natural (λ(x : Natural) → 5 * x) 1
@@ -0,0 +1,1 @@+125
@@ -0,0 +1,1 @@+λ(zero : Natural) → (../../../../../../Prelude/package.dhall).`Natural`.fold 3 Natural (λ(x : Natural) → 5 * x) zero
@@ -0,0 +1,1 @@+λ(zero : Natural) → 5 * (5 * (5 * zero))
@@ -0,0 +1,4 @@+ λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ (../../../../../../Prelude/package.dhall).`Natural`.fold 3 natural succ zero
@@ -0,0 +1,1 @@+λ(natural : Type) → λ(succ : natural → natural) → λ(zero : natural) → succ (succ (succ zero))
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.isZero 2
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.isZero 0
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.odd 3
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.odd 0
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.product [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+30
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.product ([] : List Natural)
@@ -0,0 +1,1 @@+1
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.show 3
@@ -0,0 +1,1 @@+"3"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.show 0
@@ -0,0 +1,1 @@+"0"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.sum [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+10
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.sum ([] : List Natural)
@@ -0,0 +1,1 @@+0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.toDouble 3
@@ -0,0 +1,1 @@+3.0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.toDouble 0
@@ -0,0 +1,1 @@+0.0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.toInteger 3
@@ -0,0 +1,1 @@++3
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Natural`.toInteger 0
@@ -0,0 +1,1 @@++0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.all Natural Natural/even (Some 3)
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.all Natural Natural/even (None Natural)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.any Natural Natural/even (Some 2)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.any Natural Natural/even (None Natural)
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,7 @@+(../../../../../../Prelude/package.dhall).`Optional`.build+Natural+( λ(optional : Type)+→ λ(some : Natural → optional)+→ λ(none : optional)+→ some 1+)
@@ -0,0 +1,1 @@+Some 1
@@ -0,0 +1,7 @@+(../../../../../../Prelude/package.dhall).`Optional`.build+Natural+( λ(optional : Type)+→ λ(some : Natural → optional)+→ λ(none : optional)+→ none+)
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.concat Natural (Some (Some 1))
@@ -0,0 +1,1 @@+Some 1
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.concat Natural (Some (None Natural))
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.concat Natural (None (Optional Natural))
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.filter Natural Natural/even (Some 2)
@@ -0,0 +1,1 @@+Some 2
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.filter Natural Natural/odd (Some 2)
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.fold Natural (Some 2) Natural (λ(x : Natural) → x) 0
@@ -0,0 +1,1 @@+2
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.fold Natural (None Natural) Natural (λ(x : Natural) → x) 0
@@ -0,0 +1,1 @@+0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.head Natural [ None Natural, Some 1, Some 2 ]
@@ -0,0 +1,1 @@+Some 1
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.head Natural [ None Natural, None Natural ]
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.head Natural ([] : List (Optional Natural))
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.last Natural [ None Natural, Some 1, Some 2 ]
@@ -0,0 +1,1 @@+Some 2
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.last Natural [ None Natural, None Natural ]
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.last Natural ([] : List (Optional Natural))
@@ -0,0 +1,1 @@+None Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.length Natural (Some 2)
@@ -0,0 +1,1 @@+1
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.length Natural (None Natural)
@@ -0,0 +1,1 @@+0
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.map Natural Bool Natural/even (Some 3)
@@ -0,0 +1,1 @@+Some False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.map Natural Bool Natural/even (None Natural)
@@ -0,0 +1,1 @@+None Bool
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.null Natural (Some 2)
@@ -0,0 +1,1 @@+False
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.null Natural (None Natural)
@@ -0,0 +1,1 @@+True
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.toList Natural (Some 1)
@@ -0,0 +1,1 @@+[ 1 ] : List Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.toList Natural (None Natural)
@@ -0,0 +1,1 @@+[] : List Natural
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.unzip Text Bool (Some { _1 = "ABC", _2 = True })
@@ -0,0 +1,1 @@+{ _1 = Some "ABC", _2 = Some True }
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Optional`.unzip Text Bool (None { _1 : Text, _2 : Bool })
@@ -0,0 +1,1 @@+{ _1 = None Text, _2 = None Bool }
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concat [ "ABC", "DEF", "GHI" ]
@@ -0,0 +1,1 @@+"ABCDEFGHI"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concat ([] : List Text)
@@ -0,0 +1,1 @@+""
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concatMap Natural (λ(n : Natural) → "${Natural/show n} ") [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+"0 1 2 "
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concatMap Natural (λ(n : Natural) → "${Natural/show n} ") ([] : List Natural)
@@ -0,0 +1,1 @@+""
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concatMapSep ", " Natural Natural/show [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+"0, 1, 2"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concatMapSep ", " Natural Natural/show ([] : List Natural)
@@ -0,0 +1,1 @@+""
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concatSep ", " [ "ABC", "DEF", "GHI" ]
@@ -0,0 +1,1 @@+"ABC, DEF, GHI"
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.concatSep ", " ([] : List Text)
@@ -0,0 +1,1 @@+""
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.show "ABC"
@@ -0,0 +1,1 @@+"\"ABC\""
@@ -0,0 +1,1 @@+(../../../../../../Prelude/package.dhall).`Text`.show "\u0000 \$ \\ \n \u263a"
@@ -0,0 +1,1 @@+"\"\\u0000 \\u0024 \\\\ \\n ☺\""
@@ -0,0 +1,52 @@+let Text/concatMap = (../../../Prelude/package.dhall).`Text`.concatMap++let Text/concatSep = (../../../Prelude/package.dhall).`Text`.concatSep++let Row =+ { cores :+ Natural+ , host :+ Text+ , key :+ Text+ , mandatoryFeatures :+ List Text+ , platforms :+ List Text+ , speedFactor :+ Natural+ , supportedFeatures :+ List Text+ , user :+ Optional Text+ }++let renderRow =+ λ ( row+ : Row+ )+ → let host =+ Optional/fold+ Text+ row.user+ Text+ (λ(user : Text) → "${user}@${row.host}")+ row.host+ + let platforms = Text/concatSep "," row.platforms+ + let key = row.key+ + let cores = Integer/show (Natural/toInteger row.cores)+ + let speedFactor = Integer/show (Natural/toInteger row.speedFactor)+ + let supportedFeatures = Text/concatSep "," row.supportedFeatures+ + let mandatoryFeatures = Text/concatSep "," row.mandatoryFeatures+ + in ''+ ${host} ${platforms} ${key} ${cores} ${speedFactor} ${supportedFeatures} ${mandatoryFeatures}+ ''++in Text/concatMap Row renderRow
@@ -0,0 +1,212 @@+ λ ( _+ : List+ { cores :+ Natural+ , host :+ Text+ , key :+ Text+ , mandatoryFeatures :+ List Text+ , platforms :+ List Text+ , speedFactor :+ Natural+ , supportedFeatures :+ List Text+ , user :+ Optional Text+ }+ )+→ List/fold+ { cores :+ Natural+ , host :+ Text+ , key :+ Text+ , mandatoryFeatures :+ List Text+ , platforms :+ List Text+ , speedFactor :+ Natural+ , supportedFeatures :+ List Text+ , user :+ Optional Text+ }+ _+ Text+ ( λ ( _+ : { cores :+ Natural+ , host :+ Text+ , key :+ Text+ , mandatoryFeatures :+ List Text+ , platforms :+ List Text+ , speedFactor :+ Natural+ , supportedFeatures :+ List Text+ , user :+ Optional Text+ }+ )+ → λ(_ : Text)+ → ''+ ${Optional/fold+ Text+ _@1.user+ Text+ (λ(user : Text) → "${user}@${_@1.host}")+ _@1.host} ${merge+ { Empty = λ(_ : {}) → "", NonEmpty = λ(_ : Text) → _ }+ ( List/fold+ Text+ _@1.platforms+ < Empty : {} | NonEmpty : Text >+ ( λ(_ : Text)+ → λ(_ : < Empty : {} | NonEmpty : Text >)+ → merge+ { Empty =+ λ(_ : {}) → < NonEmpty = _@2 | Empty : {} >+ , NonEmpty =+ λ(_ : Text)+ → < NonEmpty = _@2 ++ "," ++ _ | Empty : {} >+ }+ _+ : < Empty : {} | NonEmpty : Text >+ )+ < Empty = {=} | NonEmpty : Text >+ )+ : Text} ${_@1.key} ${Integer/show+ ( Natural/toInteger _@1.cores+ )} ${Integer/show+ ( Natural/toInteger+ _@1.speedFactor+ )} ${merge+ { Empty =+ λ(_ : {}) → ""+ , NonEmpty =+ λ(_ : Text) → _+ }+ ( List/fold+ Text+ _@1.supportedFeatures+ < Empty :+ {}+ | NonEmpty :+ Text+ >+ ( λ(_ : Text)+ → λ ( _+ : < Empty :+ {}+ | NonEmpty :+ Text+ >+ )+ → merge+ { Empty =+ λ(_ : {})+ → < NonEmpty =+ _@2+ | Empty :+ {}+ >+ , NonEmpty =+ λ(_ : Text)+ → < NonEmpty =+ _@2+ ++ ","+ ++ _+ | Empty :+ {}+ >+ }+ _+ : < Empty :+ {}+ | NonEmpty :+ Text+ >+ )+ < Empty =+ {=}+ | NonEmpty :+ Text+ >+ )+ : Text} ${merge+ { Empty =+ λ(_ : {})+ → ""+ , NonEmpty =+ λ ( _+ : Text+ )+ → _+ }+ ( List/fold+ Text+ _@1.mandatoryFeatures+ < Empty :+ {}+ | NonEmpty :+ Text+ >+ ( λ ( _+ : Text+ )+ → λ ( _+ : < Empty :+ {}+ | NonEmpty :+ Text+ >+ )+ → merge+ { Empty =+ λ ( _+ : {}+ )+ → < NonEmpty =+ _@2+ | Empty :+ {}+ >+ , NonEmpty =+ λ ( _+ : Text+ )+ → < NonEmpty =+ _@2+ ++ ","+ ++ _+ | Empty :+ {}+ >+ }+ _+ : < Empty :+ {}+ | NonEmpty :+ Text+ >+ )+ < Empty =+ {=}+ | NonEmpty :+ Text+ >+ )+ : Text}+ ''+ ++ _+ )+ ""
@@ -0,0 +1,6 @@+{ example0 = Double/show -0.42+, example1 = Double/show 13.37+, example2 = Double/show NaN+, example3 = Double/show Infinity+, example4 = Double/show -Infinity+}
@@ -0,0 +1,6 @@+{ example0 = "-0.42"+, example1 = "13.37"+, example2 = "NaN"+, example3 = "Infinity"+, example4 = "-Infinity"+}
@@ -0,0 +1,4 @@+{ example0 = Integer/show +1337+, example1 = Integer/show -42+, example2 = Integer/show +0+}
@@ -0,0 +1,1 @@+{ example0 = "+1337", example1 = "-42", example2 = "+0" }
@@ -0,0 +1,10 @@+[ Integer/toDouble +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792+, Integer/toDouble +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791+, Integer/toDouble +179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218945+, Integer/toDouble +179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218944++, Integer/toDouble -179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792+, Integer/toDouble -179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791+, Integer/toDouble -179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218945+, Integer/toDouble -179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218944+]
@@ -0,0 +1,9 @@+[ Infinity+, 1.7976931348623157e308+, 1.7976931348623157e308+, 1.7976931348623155e308+, -Infinity+, -1.7976931348623157e308+, -1.7976931348623157e308+, -1.7976931348623155e308+]
@@ -0,0 +1,3 @@+let l = λ(n : Natural) → λ(m : Natural) → λ(x : Natural) → n + m * x+let f = l 2 3+in f 445
@@ -0,0 +1,1 @@+1337
@@ -0,0 +1,22 @@+{ example0 =+ List/build+ Bool+ ( λ(list : Type)+ → λ(cons : Bool → list → list)+ → λ(nil : list)+ → cons True (cons False nil)+ )+, example1 =+ List/build+ Bool+ (λ(x : Type) → λ(x : Bool → x → x) → λ(x : x@1) → x@1 True (x@1 False x))+, example2 =+ λ(id : ∀(a : Type) → a → a)+ → List/build+ Bool+ ( λ(list : Type)+ → λ(cons : Bool → list → list)+ → λ(nil : list)+ → id list (cons True (cons False nil))+ )+}
@@ -0,0 +1,7 @@+{ example0 =+ [ True, False ] : List Bool+, example1 =+ [ True, False ] : List Bool+, example2 =+ λ(id : ∀(a : Type) → a → a) → id (List Bool) [ True, False ]+}
@@ -0,0 +1,4 @@+''+ foo+bar+''
@@ -0,0 +1,4 @@+''+ foo+bar+''
@@ -0,0 +1,18 @@+{ example0 =+ Natural/build+ ( λ(natural : Type)+ → λ(succ : natural → natural)+ → λ(zero : natural)+ → succ zero+ )+, example1 =+ Natural/build (λ(x : Type) → λ(x : x → x) → λ(x : x@1) → x@1 x)+, example2 =+ λ(id : ∀(a : Type) → a → a)+ → Natural/build+ ( λ(natural : Type)+ → λ(succ : natural → natural)+ → λ(zero : natural)+ → id natural (succ zero)+ )+}
@@ -0,0 +1,7 @@+{ example0 =+ 1+, example1 =+ 1+, example2 =+ λ(id : ∀(a : Type) → a → a) → id Natural 1+}
@@ -0,0 +1,1 @@+1 + 2
@@ -0,0 +1,1 @@+3
@@ -0,0 +1,1 @@+Natural/show 42
@@ -0,0 +1,1 @@+"42"
@@ -0,0 +1,1 @@+Natural/toInteger 1
@@ -0,0 +1,1 @@++1
@@ -0,0 +1,32 @@+{ example0 =+ Optional/build+ Natural+ ( λ(optional : Type)+ → λ(just : Natural → optional)+ → λ(nothing : optional)+ → just 1+ )+, example1 =+ Optional/build+ Integer+ (λ(optional : Type) → λ(x : Integer → optional) → λ(x : optional) → x@1 +1)+, example2 =+ λ(id : ∀(a : Type) → a → a)+ → Optional/build+ Bool+ ( λ(optional : Type)+ → λ(just : Bool → optional)+ → λ(nothing : optional)+ → id optional (just True)+ )+, example3 =+ λ(a : Type)+ → λ(x : a)+ → Optional/build+ a+ ( λ(optional : Type)+ → λ(just : a → optional)+ → λ(nothing : optional)+ → just x+ )+}
@@ -0,0 +1,9 @@+{ example0 =+ [ 1 ] : Optional Natural+, example1 =+ [ +1 ] : Optional Integer+, example2 =+ λ(id : ∀(a : Type) → a → a) → id (Optional Bool) ([ True ] : Optional Bool)+, example3 =+ λ(a : Type) → λ(x : a) → [ x ] : Optional a+}
@@ -0,0 +1,1 @@+Optional/build Text (Optional/fold Text ([ "foo" ] : Optional Text))
@@ -0,0 +1,1 @@+[ "foo" ] : Optional Text
@@ -0,0 +1,7 @@+ let f =+ λ(o : Optional Text)+ → Optional/fold Text o Natural (λ(j : Text) → 1) 2++in { example0 = f ([ "foo" ] : Optional Text)+ , example1 = f ([] : Optional Text)+ }
@@ -0,0 +1,1 @@+{ example0 = 1, example1 = 2 }
@@ -0,0 +1,1 @@+{ b = 2 } // { a = 1 }
@@ -0,0 +1,1 @@+{ a = 1, b = 2 }
@@ -0,0 +1,6 @@+{ example0 = λ(x : Bool) → x && True+, example1 = λ(x : Bool) → True && x+, example2 = λ(x : Bool) → x && False+, example3 = λ(x : Bool) → False && x+, example4 = λ(x : Bool) → x && x+}
@@ -0,0 +1,6 @@+{ example0 = λ(x : Bool) → x+, example1 = λ(x : Bool) → x+, example2 = λ(x : Bool) → False+, example3 = λ(x : Bool) → False+, example4 = λ(x : Bool) → x+}
@@ -0,0 +1,4 @@+{ example0 = λ(x : Bool) → x == True+, example1 = λ(x : Bool) → True == x+, example2 = λ(x : Bool) → x == x+}
@@ -0,0 +1,4 @@+{ example0 = λ(x : Bool) → x+, example1 = λ(x : Bool) → x+, example2 = λ(x : Bool) → True+}
@@ -0,0 +1,3 @@+{ example0 = λ(x : Bool) → if x then True else False+, example1 = λ(x : Bool) → λ(y : Text) → if x then y else y+}
@@ -0,0 +1,3 @@+{ example0 = λ(x : Bool) → x+, example1 = λ(x : Bool) → λ(y : Text) → y+}
@@ -0,0 +1,4 @@+{ example0 = λ(x : Bool) → x != False+, example1 = λ(x : Bool) → False != x+, example2 = λ(x : Bool) → x != x+}
@@ -0,0 +1,4 @@+{ example0 = λ(x : Bool) → x+, example1 = λ(x : Bool) → x+, example2 = λ(x : Bool) → False+}
@@ -0,0 +1,6 @@+{ example0 = λ(x : Bool) → x || True+, example1 = λ(x : Bool) → True || x+, example2 = λ(x : Bool) → x || False+, example3 = λ(x : Bool) → False || x+, example4 = λ(x : Bool) → x || x+}
@@ -0,0 +1,6 @@+{ example0 = λ(x : Bool) → True+, example1 = λ(x : Bool) → True+, example2 = λ(x : Bool) → x+, example3 = λ(x : Bool) → x+, example4 = λ(x : Bool) → x+}
@@ -0,0 +1,1 @@+let a:Natural = 1 in a
@@ -0,0 +1,1 @@+-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0
@@ -0,0 +1,1 @@+179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0
@@ -0,0 +1,1 @@+./testImport .hello
@@ -0,0 +1,10 @@+-- This test verifies that an implementation rejects the following expression at+-- parse time (i.e. due to an incomplete `if` expression) rather than at+-- type-checking time (i.e. due to an unbound variable named `if` or `else`)+--+-- This ensures that implementations are not treating keywords as potential+-- identifier names. In other words, if they fail to parse an incomplete+-- `if` expression they don't try to alternatively parse the expression as+-- function application instead.++if a then b else
@@ -0,0 +1,2 @@+-- Multi-line literals require a mandatory newline after the opening quotes+''ABC''
@@ -0,0 +1,2 @@+-- There needs to be a space between a function and its argument+./example.dhall[1]
@@ -0,0 +1,2 @@+-- Some operators require a space after them+[ 1 ]#[ 2 ]
@@ -0,0 +1,4 @@+{ foo = ([] : List Natural) # [1, 2, 3] # ([1, 2, 3] : List Natural)+, bar = [] : Optional Natural+, baz = [1] : Optional Natural+} : { foo : List Natural, bar : Optional Natural, baz : Optional Natural }
binary file changed (absent → 167 bytes)
@@ -0,0 +1,1 @@+https://example.com/foo as Text
@@ -0,0 +1,1 @@+öökexample.comcfooöö
@@ -0,0 +1,3 @@+{- foo -}++1
@@ -0,0 +1,1 @@+
@@ -0,0 +1,31 @@+ λ ( x+ : { field0 : Bool+ , field1 : Optional (Optional Bool)+ , field2 : Natural+ , field3 : Integer+ , field4 : Double+ , field5 : Text+ , field6 : List (List Bool)+ }+ )+→ { field00 = Natural/fold+ , field01 = Natural/build+ , field02 = Natural/isZero+ , field03 = Natural/even+ , field04 = Natural/odd+ , field05 = Natural/toInteger+ , field06 = Natural/show+ , field07 = Integer/show+ , field08 = Double/show+ , field09 = List/build+ , field10 = List/fold+ , field11 = List/length+ , field12 = List/head+ , field13 = List/last+ , field14 = List/indexed+ , field15 = List/reverse+ , field16 = Optional/fold+ , field17 = Optional/build+ , field18 = True+ , field19 = False+ }
binary file changed (absent → 531 bytes)
@@ -0,0 +1,3 @@+{ example0 = [] : Optional ./type.dhall+, example1 = [] : List ./type.dhall+}
binary file changed (absent → 59 bytes)
@@ -0,0 +1,1 @@+[ 1.1, -1.1, 1e1, 1.1e1, NaN, Infinity, -Infinity, 0.0 ]
binary file changed (absent → 43 bytes)
@@ -0,0 +1,1 @@+"ABC"
@@ -0,0 +1,1 @@+cABC
@@ -0,0 +1,5 @@+[ env:FOO++ -- Yes, this is legal+, env:"\"\\\a\b\f\n\r\t\v"+]
binary file changed (absent → 38 bytes)
@@ -0,0 +1,1 @@+"\\\"\$\\\/\b\f\n\r\t \u2200(a : Type) \u2192 a"
@@ -0,0 +1,2 @@+x\"$\/+ â(a : Type) â a
@@ -0,0 +1,4 @@+''+''${+'''+''
@@ -0,0 +1,2 @@+f${+''
@@ -0,0 +1,1 @@+({ foo = { bar = { baz = 1 } } }).foo. bar .baz
@@ -0,0 +1,1 @@+ ¡cfoo¡cbar¡cbazcfoocbarcbaz
@@ -0,0 +1,1 @@+∀(a : Type) → forall (b : Type) -> a
@@ -0,0 +1,1 @@+aadTypeabdTypeaa
@@ -0,0 +1,1 @@+Bool → Bool -> Bool
@@ -0,0 +1,1 @@+dBooldBooldBool
@@ -0,0 +1,1 @@+λ(a : Type) → λ(a : Type) → a@1
@@ -0,0 +1,1 @@+aadTypeaadTypeaa
@@ -0,0 +1,1 @@+if True then 1 else 2
@@ -0,0 +1,1 @@+õ
@@ -0,0 +1,1 @@+env:UNSET1 as Text ? env:UNSET2 ? missing ? env:UNSET3 ? 2
binary file changed (absent → 60 bytes)
@@ -0,0 +1,1 @@+"ABC${Natural/show 123}"
binary file changed (absent → 26 bytes)
@@ -0,0 +1,4 @@+''+ABC+${Natural/show 123}+''
binary file changed (absent → 28 bytes)
@@ -0,0 +1,2 @@+let _ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/ = 1+in _ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/
@@ -0,0 +1,1 @@+ xA_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/öxA_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/
@@ -0,0 +1,1 @@+λ(a : Type) → \(b : Type) -> a
@@ -0,0 +1,1 @@+aadTypeabdTypeaa
@@ -0,0 +1,254 @@+ λ ( xs+ : List+ { cores : Natural+ , host : Text+ , key : Text+ , mandatoryFeatures : List Text+ , platforms :+ List+ < AArch64_Linux : {}+ | ARMv5tel_Linux : {}+ | ARMv7l_Linux : {}+ | I686_Cygwin : {}+ | I686_Linux : {}+ | MIPS64el_Linux : {}+ | PowerPC_Linux : {}+ | X86_64_Cygwin : {}+ | X86_64_Darwin : {}+ | X86_64_FreeBSD : {}+ | X86_64_Linux : {}+ | X86_64_Solaris : {}+ >+ , speedFactor : Natural+ , supportedFeatures : List Text+ , user : Optional Text+ }+ )+→ List/fold+ { cores : Natural+ , host : Text+ , key : Text+ , mandatoryFeatures : List Text+ , platforms :+ List+ < AArch64_Linux : {}+ | ARMv5tel_Linux : {}+ | ARMv7l_Linux : {}+ | I686_Cygwin : {}+ | I686_Linux : {}+ | MIPS64el_Linux : {}+ | PowerPC_Linux : {}+ | X86_64_Cygwin : {}+ | X86_64_Darwin : {}+ | X86_64_FreeBSD : {}+ | X86_64_Linux : {}+ | X86_64_Solaris : {}+ >+ , speedFactor : Natural+ , supportedFeatures : List Text+ , user : Optional Text+ }+ xs+ Text+ ( λ ( x+ : { cores : Natural+ , host : Text+ , key : Text+ , mandatoryFeatures : List Text+ , platforms :+ List+ < AArch64_Linux : {}+ | ARMv5tel_Linux : {}+ | ARMv7l_Linux : {}+ | I686_Cygwin : {}+ | I686_Linux : {}+ | MIPS64el_Linux : {}+ | PowerPC_Linux : {}+ | X86_64_Cygwin : {}+ | X86_64_Darwin : {}+ | X86_64_FreeBSD : {}+ | X86_64_Linux : {}+ | X86_64_Solaris : {}+ >+ , speedFactor : Natural+ , supportedFeatures : List Text+ , user : Optional Text+ }+ )+ → λ(y : Text)+ → ( Optional/fold+ Text+ x.user+ Text+ (λ(user : Text) → user ++ "@" ++ x.host ++ "")+ x.host+ ++ " "+ ++ ( merge+ { Empty = λ(_ : {}) → ""+ , NonEmpty = λ(result : Text) → result+ }+ ( List/fold+ < AArch64_Linux : {}+ | ARMv5tel_Linux : {}+ | ARMv7l_Linux : {}+ | I686_Cygwin : {}+ | I686_Linux : {}+ | MIPS64el_Linux : {}+ | PowerPC_Linux : {}+ | X86_64_Cygwin : {}+ | X86_64_Darwin : {}+ | X86_64_FreeBSD : {}+ | X86_64_Linux : {}+ | X86_64_Solaris : {}+ >+ x.platforms+ < Empty : {} | NonEmpty : Text >+ ( λ ( element+ : < AArch64_Linux : {}+ | ARMv5tel_Linux : {}+ | ARMv7l_Linux : {}+ | I686_Cygwin : {}+ | I686_Linux : {}+ | MIPS64el_Linux : {}+ | PowerPC_Linux : {}+ | X86_64_Cygwin : {}+ | X86_64_Darwin : {}+ | X86_64_FreeBSD : {}+ | X86_64_Linux : {}+ | X86_64_Solaris : {}+ >+ )+ → λ(status : < Empty : {} | NonEmpty : Text >)+ → merge+ { Empty =+ λ(_ : {})+ → < NonEmpty =+ merge+ { AArch64_Linux = λ(_ : {}) → "aarch64-linux"+ , ARMv5tel_Linux =+ λ(_ : {}) → "armv5tel-linux"+ , ARMv7l_Linux = λ(_ : {}) → "armv7l-linux"+ , I686_Cygwin = λ(_ : {}) → "i686-cygwin"+ , I686_Linux = λ(_ : {}) → "i686-linux"+ , MIPS64el_Linux =+ λ(_ : {}) → "mips64el-linux"+ , PowerPC_Linux = λ(_ : {}) → "powerpc-linux"+ , X86_64_Cygwin = λ(_ : {}) → "x86_64-cygwin"+ , X86_64_Darwin = λ(_ : {}) → "x86_64-darwin"+ , X86_64_FreeBSD =+ λ(_ : {}) → "x86_64-freebsd"+ , X86_64_Linux = λ(_ : {}) → "x86_64-linux"+ , X86_64_Solaris =+ λ(_ : {}) → "x86_64-solaris"+ }+ element+ | Empty : {}+ >+ , NonEmpty =+ λ(result : Text)+ → < NonEmpty =+ ( merge+ { AArch64_Linux =+ λ(_ : {}) → "aarch64-linux"+ , ARMv5tel_Linux =+ λ(_ : {}) → "armv5tel-linux"+ , ARMv7l_Linux =+ λ(_ : {}) → "armv7l-linux"+ , I686_Cygwin =+ λ(_ : {}) → "i686-cygwin"+ , I686_Linux =+ λ(_ : {}) → "i686-linux"+ , MIPS64el_Linux =+ λ(_ : {}) → "mips64el-linux"+ , PowerPC_Linux =+ λ(_ : {}) → "powerpc-linux"+ , X86_64_Cygwin =+ λ(_ : {}) → "x86_64-cygwin"+ , X86_64_Darwin =+ λ(_ : {}) → "x86_64-darwin"+ , X86_64_FreeBSD =+ λ(_ : {}) → "x86_64-freebsd"+ , X86_64_Linux =+ λ(_ : {}) → "x86_64-linux"+ , X86_64_Solaris =+ λ(_ : {}) → "x86_64-solaris"+ }+ element+ )+ ++ ","+ ++ result+ | Empty : {}+ >+ }+ status+ : < Empty : {} | NonEmpty : Text >+ )+ < Empty = {=} | NonEmpty : Text >+ )+ : Text+ )+ ++ " "+ ++ x.key+ ++ " "+ ++ Integer/show (Natural/toInteger x.cores)+ ++ " "+ ++ Integer/show (Natural/toInteger x.speedFactor)+ ++ " "+ ++ ( merge+ { Empty = λ(_ : {}) → ""+ , NonEmpty = λ(result : Text) → result+ }+ ( List/fold+ Text+ x.supportedFeatures+ < Empty : {} | NonEmpty : Text >+ ( λ(element : Text)+ → λ(status : < Empty : {} | NonEmpty : Text >)+ → merge+ { Empty =+ λ(_ : {}) → < NonEmpty = element | Empty : {} >+ , NonEmpty =+ λ(result : Text)+ → < NonEmpty = element ++ "," ++ result+ | Empty : {}+ >+ }+ status+ : < Empty : {} | NonEmpty : Text >+ )+ < Empty = {=} | NonEmpty : Text >+ )+ : Text+ )+ ++ " "+ ++ ( merge+ { Empty = λ(_ : {}) → ""+ , NonEmpty = λ(result : Text) → result+ }+ ( List/fold+ Text+ x.mandatoryFeatures+ < Empty : {} | NonEmpty : Text >+ ( λ(element : Text)+ → λ(status : < Empty : {} | NonEmpty : Text >)+ → merge+ { Empty =+ λ(_ : {}) → < NonEmpty = element | Empty : {} >+ , NonEmpty =+ λ(result : Text)+ → < NonEmpty = element ++ "," ++ result+ | Empty : {}+ >+ }+ status+ : < Empty : {} | NonEmpty : Text >+ )+ < Empty = {=} | NonEmpty : Text >+ )+ : Text+ )+ ++ "\n"+ )+ ++ y+ )+ ""
binary file changed (absent → 3678 bytes)
@@ -0,0 +1,3 @@+ let x = 1+in let y : Natural = 2+in x
@@ -0,0 +1,1 @@+ axö aygNaturalax
@@ -0,0 +1,3 @@+-- foo++1
@@ -0,0 +1,1 @@+
@@ -0,0 +1,4 @@+[ [+1, +2, +3]+, [+1, +2, +3] : List Integer+, [] : List Integer+]
binary file changed (absent → 55 bytes)
@@ -0,0 +1,7 @@+ λ(x : <>)+→ { bar = merge {=} x : Integer+ , foo =+ merge+ { Left = λ(b : Bool) → b, Right = Natural/even }+ < Left = True | Right : Natural >+ }
@@ -0,0 +1,1 @@+ax ¢cbar axgIntegercfoo¢dLeftabdBoolabeRightlNatural/evendLeftõ¡eRightgNatural
@@ -0,0 +1,3 @@+let a = 1+let b = 2+in a + b
@@ -0,0 +1,1 @@+aaöaböaaab
@@ -0,0 +1,1 @@+[ 0, 1, 01, 10 ]
binary file changed (absent → 15 bytes)
@@ -0,0 +1,3 @@+{- foo {- bar -} baz -}++1
@@ -0,0 +1,1 @@+
@@ -0,0 +1,2 @@+ { foo = (False && Natural/even (1 + 2 * 3)) || True == False != True }+∧ { bar = [ "ABC" ++ "DEF" ] # [ "GHI" ] } ⫽ { baz = True }
binary file changed (absent → 104 bytes)
@@ -0,0 +1,1 @@+https://raw.githubusercontent.com/dhall-lang/Prelude/c79c2bc3c46f129cc5b6d594ce298a381bcae92c/List/replicate using (./a.dhall sha256:16173e984d35ee3ffd8b6b79167df89480e67d1cd03ea5d0fc93689e4d928e61) sha256:b0e3ec1797b32c80c0bcb7e8254b08c7e9e35e75e6b410c7ac21477ab90167ad
binary file changed (absent → 271 bytes)
@@ -0,0 +1,3 @@+-- Verify that certain punctuation marks terminate paths correctly+ λ(x : ./example)+→ [./example, {bar = <baz = ./example>, qux = ./example}, ./example]
binary file changed (absent → 95 bytes)
@@ -0,0 +1,5 @@+[ /absolute/path+, ./relative/path+, ~/home/anchored/path+, /ipfs/QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx/Prelude+]
binary file changed (absent → 135 bytes)
@@ -0,0 +1,4 @@+{ example1 = let `let` = 1 in `let`+, example2 = let `:.` = 1 in `:.`+, example3 = let `$ref` = 1 in `$ref`+}
@@ -0,0 +1,1 @@+£hexample1 cletöclethexample2 b:.öb:.hexample3 d$reföd$ref
@@ -0,0 +1,3 @@+{ example0 = /"foo"/bar/"baz qux"+, example1 = https://example.com/foo/"bar?baz"?qux+}
binary file changed (absent → 79 bytes)
@@ -0,0 +1,4 @@+{ foo = +1+, bar = 2+, baz = True+} : { foo : Integer, bar : Natural, baz : Bool }
@@ -0,0 +1,1 @@+£cbarcbazõcfoo£cbargNaturalcbazdBoolcfoogInteger
@@ -0,0 +1,1 @@+let TypeSynonym = Integer in +1 : TypeSynonym
@@ -0,0 +1,1 @@+ kTypeSynonymögIntegerkTypeSynonym
@@ -0,0 +1,4 @@+''+ABC+DEF+''
@@ -0,0 +1,2 @@+hABC+DEF
@@ -0,0 +1,1 @@+Sort
@@ -0,0 +1,1 @@+dSort
@@ -0,0 +1,13 @@+ \(record : { name : Text+ , value : Double+ , taxed_value : Double+ , in_ca : Bool+ }+ ) -> ''+Hello ${record.name}+You have just won ${Double/show record.value} dollars!+${ if record.in_ca+ then "Well, ${Double/show record.taxed_value} dollars, after taxes"+ else ""+ }+''
binary file changed (absent → 236 bytes)
@@ -0,0 +1,3 @@+{- ∀(a : Type) → a -}++1
@@ -0,0 +1,1 @@+
@@ -0,0 +1,1 @@+"∀(a : Type) → a"
@@ -0,0 +1,1 @@+sâ(a : Type) â a
@@ -0,0 +1,1 @@+./families/"禺.dhall"
binary file changed (absent → 25 bytes)
@@ -0,0 +1,4 @@+< A : { }+| B = { = }+| C : {}+> : < A : {} | B : {} | C : {} >
@@ -0,0 +1,1 @@+aB ¢aA aC £aA aB aC
@@ -0,0 +1,12 @@+[ http://example.com/someFile.dhall+, https://john:doe@example.com:8080/foo/bar?qux=0#xyzzy+, http://prelude.dhall-lang.org/package.dhall+, https://ipfs.io/ipfs/QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx/Prelude+, https://raw.githubusercontent.com/dhall-lang/dhall-haskell/18e4e9a18dc53271146df3ccf5b4177c3552236b/examples/True+, https://127.0.0.1/index.dhall+, https://[::]/index.dhall+, https://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/tutorial.dhall++ -- Yes, this is legal+, https://-._~%2C!$&'()*+,;=:@-._~%2C!$&'()*+,;=:/foo?/-._~%2C!$&'()*+,;=:@/?#/-._~%2C!$&'()*+,;=:@/?+]
binary file changed (absent → 558 bytes)
@@ -0,0 +1,3 @@++1+
@@ -0,0 +1,1 @@+
@@ -0,0 +1,9 @@+ -- This+ + Natural/even {-+ +{- file+-} + has+ + -} 2 -- mixed {- line endings -}
binary file changed (absent → 18 bytes)
@@ -0,0 +1,1 @@+{ foo = 1 } ∧ { bar = Text }
@@ -0,0 +1,1 @@+{ a = 1, a = 2 }
@@ -0,0 +1,49 @@+ let bottom : Type = ∀(any : Type) → any++in let not : Type → Type = λ(p : Type) → p → bottom++in let pow = λ(X : Kind) → X → Type++in let U = ∀(X : Kind) → (pow (pow X) → X) → pow (pow X)++in let tau+ : pow (pow U) → U+ = λ(t : pow (pow U))+ → λ(X : Kind)+ → λ(f : pow (pow X) → X)+ → λ(p : pow X)+ → t (λ(x : U) → p (f (x X f)))++in let sigma : U → pow (pow U) = λ(s : U) → s U (λ(t : pow (pow U)) → tau t)++in let Delta+ : pow U+ = λ(y : U) → not (∀(p : pow U) → sigma y p → p (tau (sigma y)))++in let Omega : U = tau (λ(p : pow U) → ∀(x : U) → sigma x p → p x)++in let Theta : Type = ∀(p : pow U) → (∀(x : U) → sigma x p → p x) → p Omega++in let D : Type = ∀(p : pow U) → sigma Omega p → p (tau (sigma Omega))++in let lem1+ : ∀(p : pow U) → (∀(x : U) → sigma x p → p x) → p Omega+ = λ(p : pow U)+ → λ(t1 : ∀(x : U) → sigma x p → p x)+ → t1 Omega (λ(x : U) → t1 (tau (sigma x)))++in let lem3 : D = λ(p : pow U) → lem1 (λ(y : U) → p (tau (sigma y)))++in let lem2+ : not D+ = lem1+ Delta+ ( λ(x : U)+ → λ(H2 : sigma x Delta)+ → λ(H3 : ∀(p : pow U) → sigma x p → p (tau (sigma x)))+ → H3 Delta H2 (λ(pp : pow U) → H3 (λ(y : U) → pp (tau (sigma y))))+ )++in let evidence : bottom = lem2 lem3++in evidence
@@ -0,0 +1,1 @@+< Left : Natural | Right : Type >
@@ -0,0 +1,1 @@+{ foo = 1 } ⫽ { bar = Text }
@@ -0,0 +1,4 @@+ λ ( record+ : ∀(k : Kind) → ∀(makeRecord : ∀(x : Type) → ∀(y : Type → Type) → k) → k+ )+→ record Type (λ(x : Type) → λ(y : Type → Type) → x)
@@ -0,0 +1,4 @@+ ∀ ( record+ : ∀(k : Kind) → ∀(makeRecord : ∀(x : Type) → ∀(y : Type → Type) → k) → k+ )+→ Type
@@ -0,0 +1,1 @@+λ(record : { x : Type, y : Type → Type }) → record.x
@@ -0,0 +1,1 @@+∀(record : { x : Type, y : Type → Type }) → Type
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/and [ True, False, True ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/and ([] : List Bool)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,2 @@+../../../../../../Prelude/Bool/build +(λ(bool : Type) → λ(true : bool) → λ(false : bool) → true)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,2 @@+../../../../../../Prelude/Bool/build +(λ(bool : Type) → λ(true : bool) → λ(false : bool) → false)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/even [ False, True, False ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/even [ False, True ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/even [ False ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/even ([] : List Bool)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/fold True Natural 0 1
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/fold False Natural 0 1
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/not True
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/not False
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/odd [ True, False, True ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/odd [ True, False ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/odd [ True ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/odd ([] : List Bool)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/or [ True, False, True ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/or ([] : List Bool)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/show True
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Bool/show False
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Double/show -3.1
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Double/show 0.4
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Integer/show -3
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Integer/show +0
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Integer/toDouble -3
@@ -0,0 +1,1 @@+Double
@@ -0,0 +1,1 @@+../../../../../../Prelude/Integer/toDouble +2
@@ -0,0 +1,1 @@+Double
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/all Natural Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/all Natural Natural/even ([] : List Natural)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/any Natural Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/any Natural Natural/even ([] : List Natural)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,7 @@+../../../../../../Prelude/List/build+Text+( λ(list : Type)+→ λ(cons : Text → list → list)+→ λ(nil : list)+→ cons "ABC" (cons "DEF" nil)+)
@@ -0,0 +1,1 @@+List Text
@@ -0,0 +1,7 @@+../../../../../../Prelude/List/build+Text+( λ(list : Type)+→ λ(cons : Text → list → list)+→ λ(nil : list)+→ nil+)
@@ -0,0 +1,1 @@+List Text
@@ -0,0 +1,5 @@+../../../../../../Prelude/List/concat Natural+[ [ 0, 1, 2 ]+, [ 3, 4 ]+, [ 5, 6, 7, 8 ]+]
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,5 @@+../../../../../../Prelude/List/concat Natural+[ [] : List Natural+, [] : List Natural+, [] : List Natural+]
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/concatMap Natural Natural (λ(n : Natural) → [ n, n ]) [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/concatMap Natural Natural (λ(n : Natural) → [ n, n ]) ([] : List Natural)
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/filter Natural Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/filter Natural Natural/odd [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,6 @@+../../../../../../Prelude/List/fold+Natural+[ 2, 3, 5 ]+Natural+(λ(x : Natural) → λ(y : Natural) → x + y)+0
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,7 @@+ λ(nil : Natural)+→ ../../../../../../Prelude/List/fold+ Natural+ [ 2, 3, 5 ]+ Natural+ (λ(x : Natural) → λ(y : Natural) → x + y)+ nil
@@ -0,0 +1,1 @@+∀(nil : Natural) → Natural
@@ -0,0 +1,4 @@+ λ(list : Type)+→ λ(cons : Natural → list → list)+→ λ(nil : list)+→ ../../../../../../Prelude/List/fold Natural [ 2, 3, 5 ] list cons nil
@@ -0,0 +1,1 @@+∀(list : Type) → ∀(cons : Natural → list → list) → ∀(nil : list) → list
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/generate 5 Bool Natural/even
@@ -0,0 +1,1 @@+List Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/generate 0 Bool Natural/even
@@ -0,0 +1,1 @@+List Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/head Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/head Natural ([] : List Natural)
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/indexed Bool [ True, False, True ]
@@ -0,0 +1,1 @@+List { index : Natural, value : Bool }
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/indexed Bool ([] : List Bool)
@@ -0,0 +1,1 @@+List { index : Natural, value : Bool }
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/iterate 10 Natural (λ(x : Natural) → x * 2) 1
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/iterate 0 Natural (λ(x : Natural) → x * 2) 1
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/last Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/last Natural ([] : List Natural)
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/length Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/length Natural ([] : List Natural)
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/map Natural Bool Natural/even [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+List Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/map Natural Bool Natural/even ([] : List Natural)
@@ -0,0 +1,1 @@+List Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/null Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/null Natural ([] : List Natural)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/replicate 9 Natural 1
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/replicate 0 Natural 1
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/reverse Natural [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/reverse Natural ([] : List Natural)
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,15 @@+../../../../../../Prelude/List/shifted+Bool+[ [ { index = 0, value = True }+ , { index = 1, value = True }+ , { index = 2, value = False }+ ]+, [ { index = 0, value = False }+ , { index = 1, value = False }+ ]+, [ { index = 0, value = True }+ , { index = 1, value = True }+ , { index = 2, value = True }+ , { index = 3, value = True }+ ]+]
@@ -0,0 +1,1 @@+List { index : Natural, value : Bool }
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/shifted Bool ([] : List (List { index : Natural, value : Bool }))
@@ -0,0 +1,1 @@+List { index : Natural, value : Bool }
@@ -0,0 +1,7 @@+../../../../../../Prelude/List/unzip+Text+Bool+[ { _1 = "ABC", _2 = True }+, { _1 = "DEF", _2 = False }+, { _1 = "GHI", _2 = True }+]
@@ -0,0 +1,1 @@+{ _1 : List Text, _2 : List Bool }
@@ -0,0 +1,1 @@+../../../../../../Prelude/List/unzip Text Bool ([] : List { _1 : Text, _2 : Bool })
@@ -0,0 +1,1 @@+{ _1 : List Text, _2 : List Bool }
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Bool`.and
@@ -0,0 +1,1 @@+../../../../../Prelude/Monoid Bool
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Bool`.or
@@ -0,0 +1,1 @@+../../../../../Prelude/Monoid Bool
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Bool`.even
@@ -0,0 +1,1 @@+../../../../../Prelude/Monoid Bool
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Bool`.odd
@@ -0,0 +1,1 @@+../../../../../Prelude/Monoid Bool
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`List`.concat
@@ -0,0 +1,1 @@+∀(a : Type) → ../../../../../Prelude/Monoid (List a)
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`List`.shifted
@@ -0,0 +1,1 @@+∀(a : Type) → ../../../../../Prelude/Monoid (List { index : Natural, value : a })
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Natural`.sum
@@ -0,0 +1,1 @@+../../../../../Prelude/Monoid Natural
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Natural`.product
@@ -0,0 +1,1 @@+../../../../../Prelude/Monoid Natural
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Optional`.head
@@ -0,0 +1,1 @@+∀(a : Type) → ../../../../../Prelude/Monoid (Optional a)
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Optional`.last
@@ -0,0 +1,1 @@+∀(a : Type) → ../../../../../Prelude/Monoid (Optional a)
@@ -0,0 +1,1 @@+(../../../../../Prelude/package.dhall).`Text`.concat
@@ -0,0 +1,1 @@+../../../../../Prelude/Monoid Text
@@ -0,0 +1,6 @@+../../../../../../Prelude/Natural/build+( λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ succ (succ (succ zero))+)
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,6 @@+../../../../../../Prelude/Natural/build+( λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ zero+)
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/enumerate 10
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/enumerate 0
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/even 3
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/even 0
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/fold 3 Natural (λ(x : Natural) → 5 * x) 1
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+λ(zero : Natural) → ../../../../../../Prelude/Natural/fold 3 Natural (λ(x : Natural) → 5 * x) zero
@@ -0,0 +1,1 @@+∀(zero : Natural) → Natural
@@ -0,0 +1,4 @@+ λ(natural : Type)+→ λ(succ : natural → natural)+→ λ(zero : natural)+→ ../../../../../../Prelude/Natural/fold 3 natural succ zero
@@ -0,0 +1,1 @@+∀(natural : Type) → ∀(succ : natural → natural) → ∀(zero : natural) → natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/isZero 2
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/isZero 0
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/odd 3
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/odd 0
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/product [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/product ([] : List Natural)
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/show 3
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/show 0
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/sum [ 2, 3, 5 ]
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/sum ([] : List Natural)
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/toDouble 3
@@ -0,0 +1,1 @@+Double
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/toDouble 0
@@ -0,0 +1,1 @@+Double
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/toInteger 3
@@ -0,0 +1,1 @@+Integer
@@ -0,0 +1,1 @@+../../../../../../Prelude/Natural/toInteger 0
@@ -0,0 +1,1 @@+Integer
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/all Natural Natural/even (Some 3)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/all Natural Natural/even (None Natural)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/any Natural Natural/even (Some 2)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/any Natural Natural/even (None Natural)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,7 @@+../../../../../../Prelude/Optional/build+Natural+( λ(optional : Type)+→ λ(some : Natural → optional)+→ λ(none : optional)+→ some 1+)
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,7 @@+../../../../../../Prelude/Optional/build+Natural+( λ(optional : Type)+→ λ(some : Natural → optional)+→ λ(none : optional)+→ none+)
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/concat Natural (Some (Some 1))
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/concat Natural (Some (None Natural))
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/concat Natural (None (Optional Natural))
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/filter Natural Natural/even (Some 2)
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/filter Natural Natural/odd (Some 2)
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/fold Natural (Some 2) Natural (λ(x : Natural) → x) 0
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/fold Natural (None Natural) Natural (λ(x : Natural) → x) 0
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/head Natural [ None Natural, Some 1, Some 2 ]
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/head Natural [ None Natural, None Natural ]
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/head Natural ([] : List (Optional Natural))
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/last Natural [ None Natural, Some 1, Some 2 ]
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/last Natural [ None Natural, None Natural ]
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/last Natural ([] : List (Optional Natural))
@@ -0,0 +1,1 @@+Optional Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/length Natural (Some 2)
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/length Natural (None Natural)
@@ -0,0 +1,1 @@+Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/map Natural Bool Natural/even (Some 3)
@@ -0,0 +1,1 @@+Optional Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/map Natural Bool Natural/even (None Natural)
@@ -0,0 +1,1 @@+Optional Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/null Natural (Some 2)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/null Natural (None Natural)
@@ -0,0 +1,1 @@+Bool
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/toList Natural (Some 1)
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/toList Natural (None Natural)
@@ -0,0 +1,1 @@+List Natural
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/unzip Text Bool (Some { _1 = "ABC", _2 = True })
@@ -0,0 +1,1 @@+{ _1 : Optional Text, _2 : Optional Bool }
@@ -0,0 +1,1 @@+../../../../../../Prelude/Optional/unzip Text Bool (None { _1 : Text, _2 : Bool })
@@ -0,0 +1,1 @@+{ _1 : Optional Text, _2 : Optional Bool }
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concat [ "ABC", "DEF", "GHI" ]
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concat ([] : List Text)
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concatMap Natural (λ(n : Natural) → "${Natural/show n} ") [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concatMap Natural (λ(n : Natural) → "${Natural/show n} ") ([] : List Natural)
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concatMapSep ", " Natural Natural/show [ 0, 1, 2 ]
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concatMapSep ", " Natural Natural/show ([] : List Natural)
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concatSep ", " [ "ABC", "DEF", "GHI" ]
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,1 @@+../../../../../../Prelude/Text/concatSep ", " ([] : List Text)
@@ -0,0 +1,1 @@+Text
@@ -0,0 +1,3 @@+let types = { Scopes = < Public : {} | Private : {} >}+let prelude = { types = types }+in prelude.types.Scopes.Public {=}
@@ -0,0 +1,1 @@+< Public : {} | Private : {} >
@@ -0,0 +1,1 @@+{ x = Text, y = List }
@@ -0,0 +1,1 @@+{ x : Type, y : Type → Type }
@@ -0,0 +1,1 @@+{ x = Text }.x
@@ -0,0 +1,1 @@+Type
@@ -0,0 +1,1 @@+< Foo : Text | Bar : Natural >.Foo
@@ -0,0 +1,1 @@+∀(Foo : Text) → < Bar : Natural | Foo : Text >
@@ -0,0 +1,1 @@+< Left = List | Right : Type >
@@ -0,0 +1,1 @@+< Left : Type → Type | Right : Type >
@@ -0,0 +1,5 @@+ let anonymousFunction = λ(a : Type) → List a++in λ(HigherOrderType : (Type → Type) → Type)+ → λ(x : HigherOrderType anonymousFunction)+ → (x : HigherOrderType anonymousFunction)
@@ -0,0 +1,4 @@+ ∀(HigherOrderType : (Type → Type) → Type)+→ ∀(x : HigherOrderType (λ(a : Type) → List a))+→ HigherOrderType (λ(a : Type) → List a)+
@@ -0,0 +1,1 @@+{ x = Bool, y = Text, z = List }
@@ -0,0 +1,1 @@+{ x : Type, y : Type, z : Type → Type }
@@ -0,0 +1,1 @@+λ(k : Kind) → λ(a : k → k → Type) → λ(x : k) → a x
@@ -0,0 +1,1 @@+∀(k : Kind) → (k → k → Type) → k → k → Type
@@ -0,0 +1,6 @@+ let Foo = < Bar : {} | Baz : {} >++in λ(a : Type)+ → λ(f : {} → a)+ → λ(ts : Foo)+ → merge { Bar = λ(a : {}) → f a, Baz = f } ts
@@ -0,0 +1,1 @@+∀(a : Type) → ∀(f : {} → a) → ∀(ts : < Bar : {} | Baz : {} >) → a
@@ -0,0 +1,7 @@+-- Verify that users can use `.` to both access a record field and a union+-- constructor within the same expression. This is a common idiom if a user+-- provides a types package.++let Scope = < Public : {} | Private : {} >+let types = { Scope = Scope }+in types.Scope.Public {=}
@@ -0,0 +1,1 @@+< Private : {} | Public : {} >
@@ -0,0 +1,1 @@+< Left = List | Right : Type >
@@ -0,0 +1,1 @@+< Left : Type → Type | Right : Type >
@@ -1,8 +1,8 @@ Name: dhall-Version: 1.20.1+Version: 1.21.0 Cabal-Version: >=1.10 Build-Type: Simple-Tested-With: GHC == 8.0.1+Tested-With: GHC == 7.10.3, GHC == 8.4.3, GHC == 8.6.1 License: BSD3 License-File: LICENSE Copyright: 2017 Gabriel Gonzalez@@ -26,263 +26,338 @@ benchmark/deep-nested-large-record/*.dhall benchmark/examples/*.dhall CHANGELOG.md- Prelude/Monoid- Prelude/package.dhall+ dhall-lang/Prelude/Bool/and+ dhall-lang/Prelude/Bool/build+ dhall-lang/Prelude/Bool/even+ dhall-lang/Prelude/Bool/fold+ dhall-lang/Prelude/Bool/not+ dhall-lang/Prelude/Bool/odd+ dhall-lang/Prelude/Bool/or+ dhall-lang/Prelude/Bool/package.dhall+ dhall-lang/Prelude/Bool/show+ dhall-lang/Prelude/Double/package.dhall+ dhall-lang/Prelude/Double/show+ dhall-lang/Prelude/Function/compose+ dhall-lang/Prelude/Function/package.dhall+ dhall-lang/Prelude/Integer/package.dhall+ dhall-lang/Prelude/Integer/show+ dhall-lang/Prelude/Integer/toDouble+ dhall-lang/Prelude/JSON/keyText+ dhall-lang/Prelude/JSON/keyValue+ dhall-lang/Prelude/JSON/Nesting+ dhall-lang/Prelude/JSON/package.dhall+ dhall-lang/Prelude/JSON/Tagged+ dhall-lang/Prelude/List/all+ dhall-lang/Prelude/List/any+ dhall-lang/Prelude/List/build+ dhall-lang/Prelude/List/concat+ dhall-lang/Prelude/List/concatMap+ dhall-lang/Prelude/List/filter+ dhall-lang/Prelude/List/fold+ dhall-lang/Prelude/List/generate+ dhall-lang/Prelude/List/head+ dhall-lang/Prelude/List/indexed+ dhall-lang/Prelude/List/iterate+ dhall-lang/Prelude/List/last+ dhall-lang/Prelude/List/length+ dhall-lang/Prelude/List/map+ dhall-lang/Prelude/List/null+ dhall-lang/Prelude/List/package.dhall+ dhall-lang/Prelude/List/replicate+ dhall-lang/Prelude/List/reverse+ dhall-lang/Prelude/List/shifted+ dhall-lang/Prelude/List/unzip+ dhall-lang/Prelude/Monoid+ dhall-lang/Prelude/Natural/build+ dhall-lang/Prelude/Natural/enumerate+ dhall-lang/Prelude/Natural/even+ dhall-lang/Prelude/Natural/fold+ dhall-lang/Prelude/Natural/isZero+ dhall-lang/Prelude/Natural/odd+ dhall-lang/Prelude/Natural/package.dhall+ dhall-lang/Prelude/Natural/product+ dhall-lang/Prelude/Natural/show+ dhall-lang/Prelude/Natural/sum+ dhall-lang/Prelude/Natural/toDouble+ dhall-lang/Prelude/Natural/toInteger+ dhall-lang/Prelude/Optional/all+ dhall-lang/Prelude/Optional/any+ dhall-lang/Prelude/Optional/build+ dhall-lang/Prelude/Optional/concat+ dhall-lang/Prelude/Optional/filter+ dhall-lang/Prelude/Optional/fold+ dhall-lang/Prelude/Optional/head+ dhall-lang/Prelude/Optional/last+ dhall-lang/Prelude/Optional/length+ dhall-lang/Prelude/Optional/map+ dhall-lang/Prelude/Optional/null+ dhall-lang/Prelude/Optional/package.dhall+ dhall-lang/Prelude/Optional/toList+ dhall-lang/Prelude/Optional/unzip+ dhall-lang/Prelude/package.dhall+ dhall-lang/Prelude/Text/concat+ dhall-lang/Prelude/Text/concatMap+ dhall-lang/Prelude/Text/concatMapSep+ dhall-lang/Prelude/Text/concatSep+ dhall-lang/Prelude/Text/package.dhall+ dhall-lang/Prelude/Text/show+ dhall-lang/tests/import/data/fieldOrder/*.dhall+ dhall-lang/tests/import/failure/*.dhall+ dhall-lang/tests/import/success/*.dhall+ dhall-lang/tests/normalization/success/*.dhall+ dhall-lang/tests/normalization/success/haskell-tutorial/access/*.dhall+ dhall-lang/tests/normalization/success/haskell-tutorial/combineTypes/*.dhall+ dhall-lang/tests/normalization/success/haskell-tutorial/prefer/*.dhall+ dhall-lang/tests/normalization/success/haskell-tutorial/projection/*.dhall+ dhall-lang/tests/normalization/success/multiline/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/and/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/and/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/even/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/even/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/not/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/not/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/odd/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/odd/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/or/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/or/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Bool/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Double/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Double/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Integer/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Integer/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Integer/toDouble/*.dhall+ dhall-lang/tests/normalization/success/prelude/Integer/toDouble/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/all/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/all/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/any/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/any/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/concat/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/concat/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/concatMap/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/concatMap/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/filter/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/filter/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/generate/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/generate/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/head/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/head/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/indexed/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/indexed/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/iterate/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/iterate/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/last/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/last/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/length/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/length/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/map/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/map/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/null/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/null/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/replicate/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/replicate/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/reverse/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/reverse/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/shifted/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/shifted/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/unzip/*.dhall+ dhall-lang/tests/normalization/success/prelude/List/unzip/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/enumerate/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/enumerate/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/even/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/even/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/isZero/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/isZero/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/odd/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/odd/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/product/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/product/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/sum/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/sum/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/toDouble/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/toDouble/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/toInteger/*.dhall+ dhall-lang/tests/normalization/success/prelude/Natural/toInteger/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/all/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/all/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/any/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/any/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/build/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/concat/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/concat/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/filter/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/filter/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/fold/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/head/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/head/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/last/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/last/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/length/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/length/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/map/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/map/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/null/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/null/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/toList/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/toList/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/unzip/*.dhall+ dhall-lang/tests/normalization/success/prelude/Optional/unzip/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concat/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concat/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concatMap/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concatMap/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concatMapSep/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concatMapSep/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concatSep/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/concatSep/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/show/*.dhall+ dhall-lang/tests/normalization/success/prelude/Text/show/*.dhall+ dhall-lang/tests/normalization/success/simple/*.dhall+ dhall-lang/tests/normalization/success/simplifications/*.dhall+ dhall-lang/tests/parser/failure/*.dhall+ dhall-lang/tests/parser/success/*.dhall+ dhall-lang/tests/parser/success/*.dhallb+ dhall-lang/tests/typecheck/failure/*.dhall+ dhall-lang/tests/typecheck/success/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/and/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/and/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/even/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/even/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/not/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/not/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/odd/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/odd/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/or/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/or/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Bool/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Double/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Double/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Integer/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Integer/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Integer/toDouble/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Integer/toDouble/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/all/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/all/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/any/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/any/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/concat/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/concat/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/concatMap/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/concatMap/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/filter/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/filter/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/generate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/generate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/head/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/head/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/indexed/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/indexed/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/iterate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/iterate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/last/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/last/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/length/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/length/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/map/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/map/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/null/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/null/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/replicate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/replicate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/reverse/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/reverse/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/shifted/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/shifted/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/unzip/*.dhall+ dhall-lang/tests/typecheck/success/prelude/List/unzip/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Monoid/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/enumerate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/enumerate/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/even/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/even/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/isZero/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/isZero/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/odd/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/odd/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/product/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/product/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/show/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/sum/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/sum/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/toDouble/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/toDouble/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/toInteger/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Natural/toInteger/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/all/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/all/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/any/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/any/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/build/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/concat/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/concat/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/filter/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/filter/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/fold/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/head/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/head/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/last/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/last/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/length/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/length/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/map/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/map/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/null/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/null/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/toList/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/toList/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/unzip/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Optional/unzip/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concat/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concat/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concatMap/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concatMap/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concatMapSep/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concatMapSep/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concatSep/*.dhall+ dhall-lang/tests/typecheck/success/prelude/Text/concatSep/*.dhall+ dhall-lang/tests/typecheck/success/simple/access/*.dhall+ dhall-lang/tests/typecheck/success/simple/*.dhall tests/format/*.dhall- tests/import/data/fieldOrder/*.dhall- tests/import/data/foo/bar/*.dhall- tests/import/failure/*.dhall- tests/import/success/*.dhall tests/lint/success/*.dhall- tests/normalization/success/*.dhall- tests/normalization/success/haskell-tutorial/access/*.dhall- tests/normalization/success/haskell-tutorial/combineTypes/*.dhall- tests/normalization/success/haskell-tutorial/prefer/*.dhall- tests/normalization/success/haskell-tutorial/projection/*.dhall- tests/normalization/success/multiline/*.dhall- tests/normalization/success/prelude/Bool/and/*.dhall- tests/normalization/success/prelude/Bool/and/*.dhall- tests/normalization/success/prelude/Bool/build/*.dhall- tests/normalization/success/prelude/Bool/build/*.dhall- tests/normalization/success/prelude/Bool/even/*.dhall- tests/normalization/success/prelude/Bool/even/*.dhall- tests/normalization/success/prelude/Bool/fold/*.dhall- tests/normalization/success/prelude/Bool/fold/*.dhall- tests/normalization/success/prelude/Bool/not/*.dhall- tests/normalization/success/prelude/Bool/not/*.dhall- tests/normalization/success/prelude/Bool/odd/*.dhall- tests/normalization/success/prelude/Bool/odd/*.dhall- tests/normalization/success/prelude/Bool/or/*.dhall- tests/normalization/success/prelude/Bool/or/*.dhall- tests/normalization/success/prelude/Bool/show/*.dhall- tests/normalization/success/prelude/Bool/show/*.dhall- tests/normalization/success/prelude/Double/show/*.dhall- tests/normalization/success/prelude/Double/show/*.dhall- tests/normalization/success/prelude/Integer/show/*.dhall- tests/normalization/success/prelude/Integer/show/*.dhall- tests/normalization/success/prelude/Integer/toDouble/*.dhall- tests/normalization/success/prelude/Integer/toDouble/*.dhall- tests/normalization/success/prelude/List/all/*.dhall- tests/normalization/success/prelude/List/all/*.dhall- tests/normalization/success/prelude/List/any/*.dhall- tests/normalization/success/prelude/List/any/*.dhall- tests/normalization/success/prelude/List/build/*.dhall- tests/normalization/success/prelude/List/build/*.dhall- tests/normalization/success/prelude/List/concat/*.dhall- tests/normalization/success/prelude/List/concat/*.dhall- tests/normalization/success/prelude/List/concatMap/*.dhall- tests/normalization/success/prelude/List/concatMap/*.dhall- tests/normalization/success/prelude/List/filter/*.dhall- tests/normalization/success/prelude/List/filter/*.dhall- tests/normalization/success/prelude/List/fold/*.dhall- tests/normalization/success/prelude/List/fold/*.dhall- tests/normalization/success/prelude/List/generate/*.dhall- tests/normalization/success/prelude/List/generate/*.dhall- tests/normalization/success/prelude/List/head/*.dhall- tests/normalization/success/prelude/List/head/*.dhall- tests/normalization/success/prelude/List/indexed/*.dhall- tests/normalization/success/prelude/List/indexed/*.dhall- tests/normalization/success/prelude/List/iterate/*.dhall- tests/normalization/success/prelude/List/iterate/*.dhall- tests/normalization/success/prelude/List/last/*.dhall- tests/normalization/success/prelude/List/last/*.dhall- tests/normalization/success/prelude/List/length/*.dhall- tests/normalization/success/prelude/List/length/*.dhall- tests/normalization/success/prelude/List/map/*.dhall- tests/normalization/success/prelude/List/map/*.dhall- tests/normalization/success/prelude/List/null/*.dhall- tests/normalization/success/prelude/List/null/*.dhall- tests/normalization/success/prelude/List/replicate/*.dhall- tests/normalization/success/prelude/List/replicate/*.dhall- tests/normalization/success/prelude/List/reverse/*.dhall- tests/normalization/success/prelude/List/reverse/*.dhall- tests/normalization/success/prelude/List/shifted/*.dhall- tests/normalization/success/prelude/List/shifted/*.dhall- tests/normalization/success/prelude/List/unzip/*.dhall- tests/normalization/success/prelude/List/unzip/*.dhall- tests/normalization/success/prelude/Natural/build/*.dhall- tests/normalization/success/prelude/Natural/build/*.dhall- tests/normalization/success/prelude/Natural/enumerate/*.dhall- tests/normalization/success/prelude/Natural/enumerate/*.dhall- tests/normalization/success/prelude/Natural/even/*.dhall- tests/normalization/success/prelude/Natural/even/*.dhall- tests/normalization/success/prelude/Natural/fold/*.dhall- tests/normalization/success/prelude/Natural/fold/*.dhall- tests/normalization/success/prelude/Natural/isZero/*.dhall- tests/normalization/success/prelude/Natural/isZero/*.dhall- tests/normalization/success/prelude/Natural/odd/*.dhall- tests/normalization/success/prelude/Natural/odd/*.dhall- tests/normalization/success/prelude/Natural/product/*.dhall- tests/normalization/success/prelude/Natural/product/*.dhall- tests/normalization/success/prelude/Natural/show/*.dhall- tests/normalization/success/prelude/Natural/show/*.dhall- tests/normalization/success/prelude/Natural/sum/*.dhall- tests/normalization/success/prelude/Natural/sum/*.dhall- tests/normalization/success/prelude/Natural/toDouble/*.dhall- tests/normalization/success/prelude/Natural/toDouble/*.dhall- tests/normalization/success/prelude/Natural/toInteger/*.dhall- tests/normalization/success/prelude/Natural/toInteger/*.dhall- tests/normalization/success/prelude/Optional/all/*.dhall- tests/normalization/success/prelude/Optional/all/*.dhall- tests/normalization/success/prelude/Optional/any/*.dhall- tests/normalization/success/prelude/Optional/any/*.dhall- tests/normalization/success/prelude/Optional/build/*.dhall- tests/normalization/success/prelude/Optional/build/*.dhall- tests/normalization/success/prelude/Optional/concat/*.dhall- tests/normalization/success/prelude/Optional/concat/*.dhall- tests/normalization/success/prelude/Optional/filter/*.dhall- tests/normalization/success/prelude/Optional/filter/*.dhall- tests/normalization/success/prelude/Optional/fold/*.dhall- tests/normalization/success/prelude/Optional/fold/*.dhall- tests/normalization/success/prelude/Optional/head/*.dhall- tests/normalization/success/prelude/Optional/head/*.dhall- tests/normalization/success/prelude/Optional/last/*.dhall- tests/normalization/success/prelude/Optional/last/*.dhall- tests/normalization/success/prelude/Optional/length/*.dhall- tests/normalization/success/prelude/Optional/length/*.dhall- tests/normalization/success/prelude/Optional/map/*.dhall- tests/normalization/success/prelude/Optional/map/*.dhall- tests/normalization/success/prelude/Optional/null/*.dhall- tests/normalization/success/prelude/Optional/null/*.dhall- tests/normalization/success/prelude/Optional/toList/*.dhall- tests/normalization/success/prelude/Optional/toList/*.dhall- tests/normalization/success/prelude/Optional/unzip/*.dhall- tests/normalization/success/prelude/Optional/unzip/*.dhall- tests/normalization/success/prelude/Text/concat/*.dhall- tests/normalization/success/prelude/Text/concat/*.dhall- tests/normalization/success/prelude/Text/concatMap/*.dhall- tests/normalization/success/prelude/Text/concatMap/*.dhall- tests/normalization/success/prelude/Text/concatMapSep/*.dhall- tests/normalization/success/prelude/Text/concatMapSep/*.dhall- tests/normalization/success/prelude/Text/concatSep/*.dhall- tests/normalization/success/prelude/Text/concatSep/*.dhall- tests/normalization/success/simple/*.dhall- tests/normalization/success/simplifications/*.dhall- tests/parser/failure/*.dhall- tests/parser/success/*.dhall tests/regression/*.dhall tests/tutorial/*.dhall- tests/typecheck/failure/*.dhall- tests/typecheck/success/*.dhall- tests/typecheck/success/prelude/Bool/and/*.dhall- tests/typecheck/success/prelude/Bool/and/*.dhall- tests/typecheck/success/prelude/Bool/build/*.dhall- tests/typecheck/success/prelude/Bool/build/*.dhall- tests/typecheck/success/prelude/Bool/even/*.dhall- tests/typecheck/success/prelude/Bool/even/*.dhall- tests/typecheck/success/prelude/Bool/fold/*.dhall- tests/typecheck/success/prelude/Bool/fold/*.dhall- tests/typecheck/success/prelude/Bool/not/*.dhall- tests/typecheck/success/prelude/Bool/not/*.dhall- tests/typecheck/success/prelude/Bool/odd/*.dhall- tests/typecheck/success/prelude/Bool/odd/*.dhall- tests/typecheck/success/prelude/Bool/or/*.dhall- tests/typecheck/success/prelude/Bool/or/*.dhall- tests/typecheck/success/prelude/Bool/show/*.dhall- tests/typecheck/success/prelude/Bool/show/*.dhall- tests/typecheck/success/prelude/Double/show/*.dhall- tests/typecheck/success/prelude/Double/show/*.dhall- tests/typecheck/success/prelude/Integer/show/*.dhall- tests/typecheck/success/prelude/Integer/show/*.dhall- tests/typecheck/success/prelude/Integer/toDouble/*.dhall- tests/typecheck/success/prelude/Integer/toDouble/*.dhall- tests/typecheck/success/prelude/List/all/*.dhall- tests/typecheck/success/prelude/List/all/*.dhall- tests/typecheck/success/prelude/List/any/*.dhall- tests/typecheck/success/prelude/List/any/*.dhall- tests/typecheck/success/prelude/List/build/*.dhall- tests/typecheck/success/prelude/List/build/*.dhall- tests/typecheck/success/prelude/List/concat/*.dhall- tests/typecheck/success/prelude/List/concat/*.dhall- tests/typecheck/success/prelude/List/concatMap/*.dhall- tests/typecheck/success/prelude/List/concatMap/*.dhall- tests/typecheck/success/prelude/List/filter/*.dhall- tests/typecheck/success/prelude/List/filter/*.dhall- tests/typecheck/success/prelude/List/fold/*.dhall- tests/typecheck/success/prelude/List/fold/*.dhall- tests/typecheck/success/prelude/List/generate/*.dhall- tests/typecheck/success/prelude/List/generate/*.dhall- tests/typecheck/success/prelude/List/head/*.dhall- tests/typecheck/success/prelude/List/head/*.dhall- tests/typecheck/success/prelude/List/indexed/*.dhall- tests/typecheck/success/prelude/List/indexed/*.dhall- tests/typecheck/success/prelude/List/iterate/*.dhall- tests/typecheck/success/prelude/List/iterate/*.dhall- tests/typecheck/success/prelude/List/last/*.dhall- tests/typecheck/success/prelude/List/last/*.dhall- tests/typecheck/success/prelude/List/length/*.dhall- tests/typecheck/success/prelude/List/length/*.dhall- tests/typecheck/success/prelude/List/map/*.dhall- tests/typecheck/success/prelude/List/map/*.dhall- tests/typecheck/success/prelude/List/null/*.dhall- tests/typecheck/success/prelude/List/null/*.dhall- tests/typecheck/success/prelude/List/replicate/*.dhall- tests/typecheck/success/prelude/List/replicate/*.dhall- tests/typecheck/success/prelude/List/reverse/*.dhall- tests/typecheck/success/prelude/List/reverse/*.dhall- tests/typecheck/success/prelude/List/shifted/*.dhall- tests/typecheck/success/prelude/List/shifted/*.dhall- tests/typecheck/success/prelude/List/unzip/*.dhall- tests/typecheck/success/prelude/List/unzip/*.dhall- tests/typecheck/success/prelude/Monoid/*.dhall- tests/typecheck/success/prelude/Natural/build/*.dhall- tests/typecheck/success/prelude/Natural/build/*.dhall- tests/typecheck/success/prelude/Natural/enumerate/*.dhall- tests/typecheck/success/prelude/Natural/enumerate/*.dhall- tests/typecheck/success/prelude/Natural/even/*.dhall- tests/typecheck/success/prelude/Natural/even/*.dhall- tests/typecheck/success/prelude/Natural/fold/*.dhall- tests/typecheck/success/prelude/Natural/fold/*.dhall- tests/typecheck/success/prelude/Natural/isZero/*.dhall- tests/typecheck/success/prelude/Natural/isZero/*.dhall- tests/typecheck/success/prelude/Natural/odd/*.dhall- tests/typecheck/success/prelude/Natural/odd/*.dhall- tests/typecheck/success/prelude/Natural/product/*.dhall- tests/typecheck/success/prelude/Natural/product/*.dhall- tests/typecheck/success/prelude/Natural/show/*.dhall- tests/typecheck/success/prelude/Natural/show/*.dhall- tests/typecheck/success/prelude/Natural/sum/*.dhall- tests/typecheck/success/prelude/Natural/sum/*.dhall- tests/typecheck/success/prelude/Natural/toDouble/*.dhall- tests/typecheck/success/prelude/Natural/toDouble/*.dhall- tests/typecheck/success/prelude/Natural/toInteger/*.dhall- tests/typecheck/success/prelude/Natural/toInteger/*.dhall- tests/typecheck/success/prelude/Optional/all/*.dhall- tests/typecheck/success/prelude/Optional/all/*.dhall- tests/typecheck/success/prelude/Optional/any/*.dhall- tests/typecheck/success/prelude/Optional/any/*.dhall- tests/typecheck/success/prelude/Optional/build/*.dhall- tests/typecheck/success/prelude/Optional/build/*.dhall- tests/typecheck/success/prelude/Optional/concat/*.dhall- tests/typecheck/success/prelude/Optional/concat/*.dhall- tests/typecheck/success/prelude/Optional/filter/*.dhall- tests/typecheck/success/prelude/Optional/filter/*.dhall- tests/typecheck/success/prelude/Optional/fold/*.dhall- tests/typecheck/success/prelude/Optional/fold/*.dhall- tests/typecheck/success/prelude/Optional/head/*.dhall- tests/typecheck/success/prelude/Optional/head/*.dhall- tests/typecheck/success/prelude/Optional/last/*.dhall- tests/typecheck/success/prelude/Optional/last/*.dhall- tests/typecheck/success/prelude/Optional/length/*.dhall- tests/typecheck/success/prelude/Optional/length/*.dhall- tests/typecheck/success/prelude/Optional/map/*.dhall- tests/typecheck/success/prelude/Optional/map/*.dhall- tests/typecheck/success/prelude/Optional/null/*.dhall- tests/typecheck/success/prelude/Optional/null/*.dhall- tests/typecheck/success/prelude/Optional/toList/*.dhall- tests/typecheck/success/prelude/Optional/toList/*.dhall- tests/typecheck/success/prelude/Optional/unzip/*.dhall- tests/typecheck/success/prelude/Optional/unzip/*.dhall- tests/typecheck/success/prelude/Text/concat/*.dhall- tests/typecheck/success/prelude/Text/concat/*.dhall- tests/typecheck/success/prelude/Text/concatMap/*.dhall- tests/typecheck/success/prelude/Text/concatMap/*.dhall- tests/typecheck/success/prelude/Text/concatMapSep/*.dhall- tests/typecheck/success/prelude/Text/concatMapSep/*.dhall- tests/typecheck/success/prelude/Text/concatSep/*.dhall- tests/typecheck/success/prelude/Text/concatSep/*.dhall- tests/typecheck/success/simple/access/*.dhall- tests/typecheck/success/simple/*.dhall Source-Repository head Type: git@@ -299,7 +374,7 @@ base >= 4.8.2.0 && < 5 , aeson >= 1.0.0.0 && < 1.5 , aeson-pretty < 0.9 ,- ansi-terminal >= 0.6.3.1 && < 0.9 ,+ ansi-terminal >= 0.6.3.1 && < 0.10, bytestring < 0.11, case-insensitive < 1.3 , cborg >= 0.2.0.0 && < 0.3 ,@@ -333,9 +408,9 @@ if flag(with-http) Build-Depends: http-types >= 0.7.0 && < 0.13,- http-client >= 0.4.30 && < 0.6 ,+ http-client >= 0.4.30 && < 0.7 , http-client-tls >= 0.2.0 && < 0.4- if !impl(ghc >= 8.0)+ if !impl(ghc >= 8.0) && !impl(eta >= 0.8.4) Build-Depends: semigroups == 0.18.* Build-Depends: transformers == 0.4.2.* Build-Depends: fail == 4.9.*@@ -374,7 +449,7 @@ Other-Modules: Dhall.Import.HTTP - GHC-Options: -Wall+ GHC-Options: -Wall -fwarn-incomplete-uni-patterns Default-Language: Haskell2010 Executable dhall@@ -390,6 +465,7 @@ Main-Is: Dhall/Test/Main.hs GHC-Options: -Wall Other-Modules:+ Dhall.Test.Dhall Dhall.Test.Format Dhall.Test.Import Dhall.Test.Lint@@ -402,6 +478,8 @@ Dhall.Test.Util Build-Depends: base >= 4 && < 5 ,+ bytestring < 0.11,+ cborg >= 0.2.0.0 && < 0.3 , containers , deepseq >= 1.2.0.1 && < 1.5 , dhall ,
@@ -3,12 +3,16 @@ import Data.Monoid ((<>)) import System.FilePath ((</>)) +import qualified GHC.IO.Encoding import qualified System.Directory+import qualified System.IO import qualified Test.Mockery.Directory import qualified Test.DocTest main :: IO () main = do+ + GHC.IO.Encoding.setLocaleEncoding System.IO.utf8 pwd <- System.Directory.getCurrentDirectory prefix <- System.Directory.makeAbsolute pwd
@@ -10,6 +10,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TupleSections #-} {-| Please read the "Dhall.Tutorial" module, which contains a tutorial explaining how to use the language, the compiler, and this library@@ -39,6 +40,7 @@ -- * Types , Type(..) , RecordType(..)+ , UnionType(..) , InputType(..) , Interpret(..) , InvalidType(..)@@ -62,6 +64,8 @@ , pair , record , field+ , union+ , constructor , GenericInterpret(..) , GenericInject(..) @@ -71,6 +75,11 @@ , inputFieldWith , inputField , inputRecord+ , UnionInputType(..)+ , inputConstructorWith+ , inputConstructor+ , inputUnion+ , (>|<) -- * Miscellaneous , rawInput@@ -88,12 +97,15 @@ import Control.Applicative (empty, liftA2, (<|>), Alternative) import Control.Exception (Exception) import Control.Monad.Trans.State.Strict-import Data.Functor.Contravariant (Contravariant(..), (>$<))+import Control.Monad (guard)+import Data.Coerce (coerce)+import Data.Functor.Contravariant (Contravariant(..), (>$<), Op(..)) import Data.Functor.Contravariant.Divisible (Divisible(..), divided) import Data.Monoid ((<>)) import Data.Scientific (Scientific) import Data.Sequence (Seq) import Data.Text (Text)+import Data.Text.Prettyprint.Doc (Pretty) import Data.Typeable (Typeable) import Data.Vector (Vector) import Data.Word (Word8, Word16, Word32, Word64)@@ -114,6 +126,7 @@ import qualified Data.Foldable import qualified Data.Functor.Compose import qualified Data.Functor.Product+import qualified Data.Semigroup import qualified Data.Scientific import qualified Data.Sequence import qualified Data.Set@@ -129,6 +142,7 @@ import qualified Dhall.Parser import qualified Dhall.Pretty.Internal import qualified Dhall.TypeCheck+import qualified Dhall.Util -- $setup -- >>> :set -XOverloadedStrings@@ -144,19 +158,36 @@ This exception indicates that an invalid `Type` was provided to the `input` function -}-data InvalidType = InvalidType deriving (Typeable)+data InvalidType s a = InvalidType+ { invalidTypeExpected :: Expr s a+ , invalidTypeExpression :: Expr s a+ }+ deriving (Typeable) _ERROR :: String _ERROR = "\ESC[1;31mError\ESC[0m" -instance Show InvalidType where- show InvalidType =+instance (Pretty s, Pretty a, Typeable s, Typeable a) => Show (InvalidType s a) where+ show InvalidType { .. } = _ERROR <> ": Invalid Dhall.Type \n\ \ \n\ \Every Type must provide an extract function that succeeds if an expression \n\- \matches the expected type. You provided a Type that disobeys this contract \n"+ \matches the expected type. You provided a Type that disobeys this contract \n\+ \ \n\+ \The Type provided has the expected dhall type: \n\+ \ \n\+ \" <> show txt0 <> "\n\+ \ \n\+ \and it couldn't extract a value from the well-typed expression: \n\+ \ \n\+ \" <> show txt1 <> "\n\+ \ \n"+ where+ txt0 = Dhall.Util.insert invalidTypeExpected+ txt1 = Dhall.Util.insert invalidTypeExpression+ -instance Exception InvalidType+instance (Pretty s, Pretty a, Typeable s, Typeable a) => Exception (InvalidType s a) -- | @since 1.16 data InputSettings = InputSettings@@ -329,9 +360,14 @@ _ -> Annot expr' expected _ <- throws (Dhall.TypeCheck.typeWith (view startingContext settings) annot)- case extract (Dhall.Core.normalizeWith (Dhall.Core.getReifiedNormalizer (view normalizer settings)) expr') of+ let normExpr = Dhall.Core.normalizeWith+ (Dhall.Core.getReifiedNormalizer+ (view normalizer settings))+ expr'+ case extract normExpr of Just x -> return x- Nothing -> Control.Exception.throwIO InvalidType+ Nothing -> Control.Exception.throwIO+ (InvalidType expected expr') {-| Type-check and evaluate a Dhall program that is read from the file-system.@@ -798,7 +834,9 @@ instance (Inject a, Interpret b) => Interpret (a -> b) where autoWith opts = Type extractOut expectedOut where- extractOut e = Just (\i -> case extractIn (Dhall.Core.normalize (App e (embed i))) of+ normalizer_ = Dhall.Core.getReifiedNormalizer (inputNormalizer opts)++ extractOut e = Just (\i -> case extractIn (Dhall.Core.normalizeWith normalizer_ (App e (embed i))) of Just o -> o Nothing -> error "Interpret: You cannot decode a function if it does not have the correct type" ) @@ -835,6 +873,10 @@ , constructorModifier :: Text -> Text -- ^ Function used to transform Haskell constructor names into their -- corresponding Dhall alternative names+ , inputNormalizer :: Dhall.Core.ReifiedNormalizer X+ -- ^ This is only used by the `Interpret` instance for functions in order+ -- to normalize the function input before marshaling the input into a+ -- Dhall expression } {-| Default interpret options, which you can tweak or override, like this:@@ -846,6 +888,7 @@ defaultInterpretOptions = InterpretOptions { fieldModifier = id , constructorModifier = id+ , inputNormalizer = Dhall.Core.ReifiedNormalizer (const (pure Nothing)) } {-| This is the underlying class that powers the `Interpret` class's support@@ -866,6 +909,35 @@ expected = Union mempty +unsafeExpectUnion :: Text -> Expr Src X -> Dhall.Map.Map Text (Expr Src X)+unsafeExpectUnion _ (Union kts) =+ kts+unsafeExpectUnion name expression =+ Dhall.Core.internalError+ (name <> ": Unexpected constructor: " <> Dhall.Core.pretty expression)++unsafeExpectRecord :: Text -> Expr Src X -> Dhall.Map.Map Text (Expr Src X)+unsafeExpectRecord _ (Record kts) =+ kts+unsafeExpectRecord name expression =+ Dhall.Core.internalError+ (name <> ": Unexpected constructor: " <> Dhall.Core.pretty expression)++unsafeExpectUnionLit+ :: Text -> Expr Src X -> (Text, Expr Src X, Dhall.Map.Map Text (Expr Src X))+unsafeExpectUnionLit _ (UnionLit k v kts) =+ (k, v, kts)+unsafeExpectUnionLit name expression =+ Dhall.Core.internalError+ (name <> ": Unexpected constructor: " <> Dhall.Core.pretty expression)++unsafeExpectRecordLit :: Text -> Expr Src X -> Dhall.Map.Map Text (Expr Src X)+unsafeExpectRecordLit _ (RecordLit kvs) =+ kvs+unsafeExpectRecordLit name expression =+ Dhall.Core.internalError+ (name <> ": Unexpected constructor: " <> Dhall.Core.pretty expression)+ instance (Constructor c1, Constructor c2, GenericInterpret f1, GenericInterpret f2) => GenericInterpret (M1 C c1 f1 :+: M1 C c2 f2) where genericAutoWith options@(InterpretOptions {..}) = pure (Type {..}) where@@ -904,11 +976,13 @@ extract _ = Nothing expected =- Union (Dhall.Map.insert name expectedR expectedL)+ Union (Dhall.Map.insert name expectedR ktsL) - Type extractL (Union expectedL) = evalState (genericAutoWith options) 1- Type extractR expectedR = evalState (genericAutoWith options) 1+ Type extractL expectedL = evalState (genericAutoWith options) 1+ Type extractR expectedR = evalState (genericAutoWith options) 1 + ktsL = unsafeExpectUnion "genericAutoWith (:+:)" expectedL+ instance (Constructor c, GenericInterpret f, GenericInterpret (g :+: h)) => GenericInterpret (M1 C c f :+: (g :+: h)) where genericAutoWith options@(InterpretOptions {..}) = pure (Type {..}) where@@ -923,21 +997,26 @@ extract _ = Nothing expected =- Union (Dhall.Map.insert name expectedL expectedR)+ Union (Dhall.Map.insert name expectedL ktsR) - Type extractL expectedL = evalState (genericAutoWith options) 1- Type extractR (Union expectedR) = evalState (genericAutoWith options) 1+ Type extractL expectedL = evalState (genericAutoWith options) 1+ Type extractR expectedR = evalState (genericAutoWith options) 1 + ktsR = unsafeExpectUnion "genericAutoWith (:+:)" expectedR+ instance (GenericInterpret (f :+: g), GenericInterpret (h :+: i)) => GenericInterpret ((f :+: g) :+: (h :+: i)) where genericAutoWith options = pure (Type {..}) where extract e = fmap L1 (extractL e) <|> fmap R1 (extractR e) - expected = Union (Dhall.Map.union expectedL expectedR)+ expected = Union (Dhall.Map.union ktsL ktsR) - Type extractL (Union expectedL) = evalState (genericAutoWith options) 1- Type extractR (Union expectedR) = evalState (genericAutoWith options) 1+ Type extractL expectedL = evalState (genericAutoWith options) 1+ Type extractR expectedR = evalState (genericAutoWith options) 1 + ktsL = unsafeExpectUnion "genericAutoWith (:+:)" expectedL+ ktsR = unsafeExpectUnion "genericAutoWith (:+:)" expectedR+ instance GenericInterpret f => GenericInterpret (M1 C c f) where genericAutoWith options = do res <- genericAutoWith options@@ -954,8 +1033,8 @@ genericAutoWith options = do Type extractL expectedL <- genericAutoWith options Type extractR expectedR <- genericAutoWith options- let Record ktsL = expectedL- let Record ktsR = expectedR+ let ktsL = unsafeExpectRecord "genericAutoWith (:*:)"expectedL+ let ktsR = unsafeExpectRecord "genericAutoWith (:*:)"expectedR pure (Type { extract = liftA2 (liftA2 (:*:)) extractL extractR@@ -1195,7 +1274,8 @@ embed (L1 l) = UnionLit keyL valL (Dhall.Map.insert keyR declaredR ktsL') where- UnionLit keyL valL ktsL' = embedL l+ (keyL, valL, ktsL') =+ unsafeExpectUnionLit "genericInjectWith (:+:)" (embedL l) embed (R1 (M1 r)) = UnionLit keyR (embedR r) ktsL nR :: M1 i c h a@@ -1205,9 +1285,11 @@ declared = Union (Dhall.Map.insert keyR declaredR ktsL) - InputType embedL (Union ktsL) = evalState (genericInjectWith options) 1- InputType embedR declaredR = evalState (genericInjectWith options) 1+ InputType embedL declaredL = evalState (genericInjectWith options) 1+ InputType embedR declaredR = evalState (genericInjectWith options) 1 + ktsL = unsafeExpectUnion "genericInjectWith (:+:)" declaredL+ instance (Constructor c, GenericInject f, GenericInject (g :+: h)) => GenericInject (M1 C c f :+: (g :+: h)) where genericInjectWith options@(InterpretOptions {..}) = pure (InputType {..}) where@@ -1215,7 +1297,8 @@ embed (R1 r) = UnionLit keyR valR (Dhall.Map.insert keyL declaredL ktsR') where- UnionLit keyR valR ktsR' = embedR r+ (keyR, valR, ktsR') =+ unsafeExpectUnionLit "genericInjectWith (:+:)" (embedR r) nL :: M1 i c f a nL = undefined@@ -1224,26 +1307,33 @@ declared = Union (Dhall.Map.insert keyL declaredL ktsR) - InputType embedL declaredL = evalState (genericInjectWith options) 1- InputType embedR (Union ktsR) = evalState (genericInjectWith options) 1+ InputType embedL declaredL = evalState (genericInjectWith options) 1+ InputType embedR declaredR = evalState (genericInjectWith options) 1 + ktsR = unsafeExpectUnion "genericInjectWith (:+:)" declaredR+ instance (GenericInject (f :+: g), GenericInject (h :+: i)) => GenericInject ((f :+: g) :+: (h :+: i)) where genericInjectWith options = pure (InputType {..}) where embed (L1 l) =- UnionLit keyL valR (Dhall.Map.union ktsL' ktsR)+ UnionLit keyL valL (Dhall.Map.union ktsL' ktsR) where- UnionLit keyL valR ktsL' = embedL l+ (keyL, valL, ktsL') =+ unsafeExpectUnionLit "genericInjectWith (:+:)" (embedL l) embed (R1 r) = UnionLit keyR valR (Dhall.Map.union ktsL ktsR') where- UnionLit keyR valR ktsR' = embedR r+ (keyR, valR, ktsR') =+ unsafeExpectUnionLit "genericInjectWith (:+:)" (embedR r) declared = Union (Dhall.Map.union ktsL ktsR) - InputType embedL (Union ktsL) = evalState (genericInjectWith options) 1- InputType embedR (Union ktsR) = evalState (genericInjectWith options) 1+ InputType embedL declaredL = evalState (genericInjectWith options) 1+ InputType embedR declaredR = evalState (genericInjectWith options) 1 + ktsL = unsafeExpectUnion "genericInjectWith (:+:)" declaredL+ ktsR = unsafeExpectUnion "genericInjectWith (:+:)" declaredR+ instance (GenericInject f, GenericInject g) => GenericInject (f :*: g) where genericInjectWith options = do InputType embedInL declaredInL <- genericInjectWith options@@ -1252,13 +1342,16 @@ let embed (l :*: r) = RecordLit (Dhall.Map.union mapL mapR) where- RecordLit mapL = embedInL l- RecordLit mapR = embedInR r+ mapL =+ unsafeExpectRecordLit "genericInjectWith (:*:)" (embedInL l) + mapR =+ unsafeExpectRecordLit "genericInjectWith (:*:)" (embedInR r)+ let declared = Record (Dhall.Map.union mapL mapR) where- Record mapL = declaredInL- Record mapR = declaredInR+ mapL = unsafeExpectRecord "genericInjectWith (:*:)" declaredInL+ mapR = unsafeExpectRecord "genericInjectWith (:*:)" declaredInR pure (InputType {..}) @@ -1371,6 +1464,67 @@ ( Data.Functor.Compose.Compose extractBody ) ) +{-| The 'UnionType' monoid allows you to build a 'Type' parser+ from a Dhall union++ For example, let's take the following Haskell data type:++> data Status = Queued Natural+> | Result Text+> | Errored Text++ And assume that we have the following Dhall union that we would like to+ parse as a @Status@:++> < Result = "Finish succesfully"+> | Queued : Natural+> | Errored : Text+> >++ Our parser has type 'Type' @Status@, but we can't build that out of any+ smaller parsers, as 'Type's cannot be combined (they are only 'Functor's).+ However, we can use a 'UnionType' to build a 'Type' for @Status@:++> status :: Type Status+> status =+> union+> ( Queued <$> constructor "Queued" natural+> <> Result <$> constructor "Result" string+> <> Errored <$> constructor "Errored" string+> )++-}+newtype UnionType a =+ UnionType+ ( Data.Functor.Compose.Compose (Dhall.Map.Map Text) Type a )+ deriving (Functor)++instance Data.Semigroup.Semigroup (UnionType a) where+ (<>) = coerce ((<>) :: Dhall.Map.Map Text (Type a) -> Dhall.Map.Map Text (Type a) -> Dhall.Map.Map Text (Type a))++instance Monoid (UnionType a) where+ mempty = coerce (mempty :: Dhall.Map.Map Text (Type a))+ mappend = (Data.Semigroup.<>)++-- | Run a 'UnionType' parser to build a 'Type' parser.+union :: UnionType a -> Type a+union (UnionType (Data.Functor.Compose.Compose mp)) = Type+ { extract = extractF+ , expected = Union expect+ }+ where+ expect = Dhall.expected <$> mp+ extractF e0 = do+ UnionLit fld e1 rest <- Just e0+ t <- Dhall.Map.lookup fld mp+ guard $ rest == Dhall.Map.delete fld expect+ Dhall.extract t e1++-- | Parse a single constructor of a union+constructor :: Text -> Type a -> UnionType a+constructor key valueType = UnionType+ ( Data.Functor.Compose.Compose (Dhall.Map.singleton key valueType) )+ {-| The 'RecordInputType' divisible (contravariant) functor allows you to build an 'InputType' injector for a Dhall record. @@ -1453,4 +1607,109 @@ recordType = Record $ declared <$> inputTypeRecord makeRecordLit x = RecordLit $ (($ x) . embed) <$> inputTypeRecord +{-| The 'UnionInputType' monoid allows you to build+ an 'InputType' injector for a Dhall record. + For example, let's take the following Haskell data type:++> data Status = Queued Natural+> | Result Text+> | Errored Text++ And assume that we have the following Dhall union that we would like to+ parse as a @Status@:++> < Result = "Finish succesfully"+> | Queued : Natural+> | Errored : Text+> >++ Our injector has type 'InputType' @Status@, but we can't build that out of any+ smaller injectors, as 'InputType's cannot be combined.+ However, we can use an 'InputUnionType' to build an 'InputType' for @Status@:++> injectStatus :: InputType Status+> injectStatus =+> adapt+> >$< inputConstructorWith "Queued" inject+> >|< inputConstructorWith "Result" inject+> >|< inputConstructorWith "Errored" inject+> where+> adapt (Queued n) = Left (Left n)+> adapt (Result t) = Left (Right t)+> adapt (Errored e) = Right e++ Or, since we are simply using the `Inject` instance to inject each branch, we could write++> injectStatus :: InputType Status+> injectStatus =+> adapt+> >$< inputConstructor "Queued"+> >|< inputConstructor "Result"+> >|< inputConstructor "Errored"+> where+> adapt (Queued n) = Left (Left n)+> adapt (Result t) = Left (Right t)+> adapt (Errored e) = Right e+-}+newtype UnionInputType a =+ UnionInputType+ ( Data.Functor.Product.Product+ ( Control.Applicative.Const+ ( Dhall.Map.Map+ Text+ ( Expr Src X )+ )+ )+ ( Op (Text, Expr Src X) )+ a+ )+ deriving (Contravariant)++-- | Combines two 'UnionInputType' values. See 'UnionInputType' for usage+-- notes.+--+-- Ideally, this matches 'Data.Functor.Contravariant.Divisible.chosen';+-- however, this allows 'UnionInputType' to not need a 'Divisible' instance+-- itself (since no instance is possible).+(>|<) :: UnionInputType a -> UnionInputType b -> UnionInputType (Either a b)+UnionInputType (Data.Functor.Product.Pair (Control.Applicative.Const mx) (Op fx))+ >|< UnionInputType (Data.Functor.Product.Pair (Control.Applicative.Const my) (Op fy)) =+ UnionInputType+ ( Data.Functor.Product.Pair+ ( Control.Applicative.Const (mx <> my) )+ ( Op (either fx fy) )+ )++infixr 5 >|<++inputUnion :: UnionInputType a -> InputType a+inputUnion ( UnionInputType ( Data.Functor.Product.Pair ( Control.Applicative.Const fields ) ( Op embedF ) ) ) =+ InputType+ { embed = \x ->+ let (name, y) = embedF x+ in UnionLit name y (Dhall.Map.delete name fields)+ , declared =+ Union fields+ }++inputConstructorWith+ :: Text+ -> InputType a+ -> UnionInputType a+inputConstructorWith name inputType = UnionInputType $+ Data.Functor.Product.Pair+ ( Control.Applicative.Const+ ( Dhall.Map.singleton+ name+ ( declared inputType )+ )+ )+ ( Op ( (name,) . embed inputType )+ )++inputConstructor+ :: Inject a+ => Text+ -> UnionInputType a+inputConstructor name = inputConstructorWith name inject
@@ -11,17 +11,18 @@ StandardVersion(..) , defaultStandardVersion , parseStandardVersion+ , renderStandardVersion -- * Encoding and decoding- , encodeWithVersion- , decodeWithVersion+ , encode+ , decode -- * Exceptions , DecodingFailure(..) ) where import Codec.CBOR.Term (Term(..))-import Control.Applicative (empty)+import Control.Applicative (empty, (<|>)) import Control.Exception (Exception) import Dhall.Core ( Binding(..)@@ -48,7 +49,6 @@ import Options.Applicative (Parser) import Prelude hiding (exponent) import GHC.Float (double2Float, float2Double)-import Codec.CBOR.Magic (floatToWord16, wordToFloat16) import qualified Crypto.Hash import qualified Data.ByteArray.Encoding@@ -62,11 +62,22 @@ -- | Supported version strings data StandardVersion- = V_5_0_0+ = NoVersion+ -- ^ No version string+ | V_5_0_0 -- ^ Version "5.0.0"+ | V_4_0_0+ -- ^ Version "4.0.0"+ | V_3_0_0+ -- ^ Version "3.0.0"+ | V_2_0_0+ -- ^ Version "2.0.0"+ | V_1_0_0+ -- ^ Version "1.0.0"+ deriving (Enum, Bounded) defaultStandardVersion :: StandardVersion-defaultStandardVersion = V_5_0_0+defaultStandardVersion = NoVersion parseStandardVersion :: Parser StandardVersion parseStandardVersion =@@ -80,9 +91,22 @@ readVersion = do string <- Options.Applicative.str case string :: Text of+ "none" -> return NoVersion+ "1.0.0" -> return V_1_0_0+ "2.0.0" -> return V_2_0_0+ "3.0.0" -> return V_3_0_0+ "4.0.0" -> return V_4_0_0 "5.0.0" -> return V_5_0_0 _ -> fail "Unsupported version" +renderStandardVersion :: StandardVersion -> Text+renderStandardVersion NoVersion = "none"+renderStandardVersion V_1_0_0 = "1.0.0"+renderStandardVersion V_2_0_0 = "2.0.0"+renderStandardVersion V_3_0_0 = "3.0.0"+renderStandardVersion V_4_0_0 = "4.0.0"+renderStandardVersion V_5_0_0 = "5.0.0"+ {-| Convert a function applied to multiple arguments to the base function and the list of arguments -}@@ -96,6 +120,7 @@ ~(baseFunction, diffArguments) = go f go baseFunction = (baseFunction, id) +-- | Encode a Dhall expression to a CBOR `Term` encode :: Expr s Import -> Term encode (Var (V "_" n)) = TInteger n@@ -155,6 +180,8 @@ TString "Double" encode Text = TString "Text"+encode TextShow =+ TString "Text/show" encode List = TString "List" encode (Const Type) =@@ -286,7 +313,7 @@ TList [ TInt 7, TMap xTs₁ ] where xTs₁ = do- (x₀, _T₀) <- Dhall.Map.toList xTs₀+ (x₀, _T₀) <- Dhall.Map.toList (Dhall.Map.sort xTs₀) let x₁ = TString x₀ let _T₁ = encode _T₀ return (x₁, _T₁)@@ -294,7 +321,7 @@ TList [ TInt 8, TMap xts₁ ] where xts₁ = do- (x₀, t₀) <- Dhall.Map.toList xts₀+ (x₀, t₀) <- Dhall.Map.toList (Dhall.Map.sort xts₀) let x₁ = TString x₀ let t₁ = encode t₀ return (x₁, t₁)@@ -311,7 +338,7 @@ TList [ TInt 11, TMap xTs₁ ] where xTs₁ = do- (x₀, _T₀) <- Dhall.Map.toList xTs₀+ (x₀, _T₀) <- Dhall.Map.toList (Dhall.Map.sort xTs₀) let x₁ = TString x₀ let _T₁ = encode _T₀ return (x₁, _T₁)@@ -321,14 +348,10 @@ t₁ = encode t₀ yTs₁ = do- (y₀, _T₀) <- Dhall.Map.toList yTs₀+ (y₀, _T₀) <- Dhall.Map.toList (Dhall.Map.sort yTs₀) let y₁ = TString y₀ let _T₁ = encode _T₀ return (y₁, _T₁)-encode (Constructors u₀) =- TList [ TInt 13, u₁ ]- where- u₁ = encode u₀ encode (BoolLit b) = TBool b encode (BoolIf t₀ l₀ r₀) =@@ -349,9 +372,10 @@ | otherwise = TDouble n64 where n32 = double2Float n64- n16 = floatToWord16 n32 useFloat = n64 == float2Double n32- useHalf = n64 == (float2Double . wordToFloat16 . fromIntegral) n16+ -- the other three cases for Half-floats are 0.0 and the infinities+ useHalf = or $ fmap (n64 ==) [0.0, infinity, -infinity]+ infinity = 1/0 :: Double encode (TextLit (Chunks xys₀ z₀)) = TList ([ TInt 18 ] ++ xys₁ ++ [ z₁ ]) where@@ -455,100 +479,102 @@ ImportHashed {..} = importHashed -decode :: Term -> Maybe (Expr s Import)-decode (TInt n) =+decodeMaybe :: Term -> Maybe (Expr s Import)+decodeMaybe (TInt n) = return (Var (V "_" (fromIntegral n)))-decode (TInteger n) =+decodeMaybe (TInteger n) = return (Var (V "_" n))-decode (TString "Natural/build") =+decodeMaybe (TString "Natural/build") = return NaturalBuild-decode (TString "Natural/fold") =+decodeMaybe (TString "Natural/fold") = return NaturalFold-decode (TString "Natural/isZero") =+decodeMaybe (TString "Natural/isZero") = return NaturalIsZero-decode (TString "Natural/even") =+decodeMaybe (TString "Natural/even") = return NaturalEven-decode (TString "Natural/odd") =+decodeMaybe (TString "Natural/odd") = return NaturalOdd-decode (TString "Natural/toInteger") =+decodeMaybe (TString "Natural/toInteger") = return NaturalToInteger-decode (TString "Natural/show") =+decodeMaybe (TString "Natural/show") = return NaturalShow-decode (TString "Integer/toDouble") =+decodeMaybe (TString "Integer/toDouble") = return IntegerToDouble-decode (TString "Integer/show") =+decodeMaybe (TString "Integer/show") = return IntegerShow-decode (TString "Double/show") =+decodeMaybe (TString "Double/show") = return DoubleShow-decode (TString "List/build") =+decodeMaybe (TString "List/build") = return ListBuild-decode (TString "List/fold") =+decodeMaybe (TString "List/fold") = return ListFold-decode (TString "List/length") =+decodeMaybe (TString "List/length") = return ListLength-decode (TString "List/head") =+decodeMaybe (TString "List/head") = return ListHead-decode (TString "List/last") =+decodeMaybe (TString "List/last") = return ListLast-decode (TString "List/indexed") =+decodeMaybe (TString "List/indexed") = return ListIndexed-decode (TString "List/reverse") =+decodeMaybe (TString "List/reverse") = return ListReverse-decode (TString "Optional/fold") =+decodeMaybe (TString "Optional/fold") = return OptionalFold-decode (TString "Optional/build") =+decodeMaybe (TString "Optional/build") = return OptionalBuild-decode (TString "Bool") =+decodeMaybe (TString "Bool") = return Bool-decode (TString "Optional") =+decodeMaybe (TString "Optional") = return Optional-decode (TString "None") =+decodeMaybe (TString "None") = return None-decode (TString "Natural") =+decodeMaybe (TString "Natural") = return Natural-decode (TString "Integer") =+decodeMaybe (TString "Integer") = return Integer-decode (TString "Double") =+decodeMaybe (TString "Double") = return Double-decode (TString "Text") =+decodeMaybe (TString "Text") = return Text-decode (TString "List") =+decodeMaybe (TString "Text/show") =+ return TextShow+decodeMaybe (TString "List") = return List-decode (TString "Type") =+decodeMaybe (TString "Type") = return (Const Type)-decode (TString "Kind") =+decodeMaybe (TString "Kind") = return (Const Kind)-decode (TString "Sort") =+decodeMaybe (TString "Sort") = return (Const Sort)-decode (TString x) =+decodeMaybe (TString x) = return (Var (V x 0))-decode (TList [ TString x, TInt n ]) =+decodeMaybe (TList [ TString x, TInt n ]) = return (Var (V x (fromIntegral n)))-decode (TList [ TString x, TInteger n ]) =+decodeMaybe (TList [ TString x, TInteger n ]) = return (Var (V x n))-decode (TList (TInt 0 : f₁ : xs₁)) = do- f₀ <- decode f₁- xs₀ <- traverse decode xs₁+decodeMaybe (TList (TInt 0 : f₁ : xs₁)) = do+ f₀ <- decodeMaybe f₁+ xs₀ <- traverse decodeMaybe xs₁ return (foldl App f₀ xs₀)-decode (TList [ TInt 1, _A₁, b₁ ]) = do- _A₀ <- decode _A₁- b₀ <- decode b₁+decodeMaybe (TList [ TInt 1, _A₁, b₁ ]) = do+ _A₀ <- decodeMaybe _A₁+ b₀ <- decodeMaybe b₁ return (Lam "_" _A₀ b₀)-decode (TList [ TInt 1, TString x, _A₁, b₁ ]) = do- _A₀ <- decode _A₁- b₀ <- decode b₁+decodeMaybe (TList [ TInt 1, TString x, _A₁, b₁ ]) = do+ _A₀ <- decodeMaybe _A₁+ b₀ <- decodeMaybe b₁ return (Lam x _A₀ b₀)-decode (TList [ TInt 2, _A₁, _B₁ ]) = do- _A₀ <- decode _A₁- _B₀ <- decode _B₁+decodeMaybe (TList [ TInt 2, _A₁, _B₁ ]) = do+ _A₀ <- decodeMaybe _A₁+ _B₀ <- decodeMaybe _B₁ return (Pi "_" _A₀ _B₀)-decode (TList [ TInt 2, TString x, _A₁, _B₁ ]) = do- _A₀ <- decode _A₁- _B₀ <- decode _B₁+decodeMaybe (TList [ TInt 2, TString x, _A₁, _B₁ ]) = do+ _A₀ <- decodeMaybe _A₁+ _B₀ <- decodeMaybe _B₁ return (Pi x _A₀ _B₀)-decode (TList [ TInt 3, TInt n, l₁, r₁ ]) = do- l₀ <- decode l₁- r₀ <- decode r₁+decodeMaybe (TList [ TInt 3, TInt n, l₁, r₁ ]) = do+ l₀ <- decodeMaybe l₁+ r₀ <- decodeMaybe r₁ op <- case n of 0 -> return BoolOr 1 -> return BoolAnd@@ -564,34 +590,34 @@ 11 -> return ImportAlt _ -> empty return (op l₀ r₀)-decode (TList [ TInt 4, _T₁ ]) = do- _T₀ <- decode _T₁+decodeMaybe (TList [ TInt 4, _T₁ ]) = do+ _T₀ <- decodeMaybe _T₁ return (ListLit (Just _T₀) empty)-decode (TList (TInt 4 : TNull : xs₁ )) = do- xs₀ <- traverse decode xs₁+decodeMaybe (TList (TInt 4 : TNull : xs₁ )) = do+ xs₀ <- traverse decodeMaybe xs₁ return (ListLit Nothing (Data.Sequence.fromList xs₀))-decode (TList [ TInt 5, _T₁ ]) = do- _T₀ <- decode _T₁+decodeMaybe (TList [ TInt 5, _T₁ ]) = do+ _T₀ <- decodeMaybe _T₁ return (OptionalLit _T₀ Nothing)-decode (TList [ TInt 5, TNull, t₁ ]) = do- t₀ <- decode t₁+decodeMaybe (TList [ TInt 5, TNull, t₁ ]) = do+ t₀ <- decodeMaybe t₁ return (Some t₀)-decode (TList [ TInt 5, _T₁, t₁ ]) = do- _T₀ <- decode _T₁- t₀ <- decode t₁+decodeMaybe (TList [ TInt 5, _T₁, t₁ ]) = do+ _T₀ <- decodeMaybe _T₁+ t₀ <- decodeMaybe t₁ return (OptionalLit _T₀ (Just t₀))-decode (TList [ TInt 6, t₁, u₁ ]) = do- t₀ <- decode t₁- u₀ <- decode u₁+decodeMaybe (TList [ TInt 6, t₁, u₁ ]) = do+ t₀ <- decodeMaybe t₁+ u₀ <- decodeMaybe u₁ return (Merge t₀ u₀ Nothing)-decode (TList [ TInt 6, t₁, u₁, _T₁ ]) = do- t₀ <- decode t₁- u₀ <- decode u₁- _T₀ <- decode _T₁+decodeMaybe (TList [ TInt 6, t₁, u₁, _T₁ ]) = do+ t₀ <- decodeMaybe t₁+ u₀ <- decodeMaybe u₁+ _T₀ <- decodeMaybe _T₁ return (Merge t₀ u₀ (Just _T₀))-decode (TList [ TInt 7, TMap xTs₁ ]) = do+decodeMaybe (TList [ TInt 7, TMap xTs₁ ]) = do let process (TString x, _T₁) = do- _T₀ <- decode _T₁+ _T₀ <- decodeMaybe _T₁ return (x, _T₀) process _ =@@ -600,9 +626,9 @@ xTs₀ <- traverse process xTs₁ return (Record (Dhall.Map.fromList xTs₀))-decode (TList [ TInt 8, TMap xts₁ ]) = do+decodeMaybe (TList [ TInt 8, TMap xts₁ ]) = do let process (TString x, t₁) = do- t₀ <- decode t₁+ t₀ <- decodeMaybe t₁ return (x, t₀) process _ =@@ -611,12 +637,12 @@ xts₀ <- traverse process xts₁ return (RecordLit (Dhall.Map.fromList xts₀))-decode (TList [ TInt 9, t₁, TString x ]) = do- t₀ <- decode t₁+decodeMaybe (TList [ TInt 9, t₁, TString x ]) = do+ t₀ <- decodeMaybe t₁ return (Field t₀ x)-decode (TList (TInt 10 : t₁ : xs₁)) = do- t₀ <- decode t₁+decodeMaybe (TList (TInt 10 : t₁ : xs₁)) = do+ t₀ <- decodeMaybe t₁ let process (TString x) = return x process _ = empty@@ -624,9 +650,9 @@ xs₀ <- traverse process xs₁ return (Project t₀ (Dhall.Set.fromList xs₀))-decode (TList [ TInt 11, TMap xTs₁ ]) = do+decodeMaybe (TList [ TInt 11, TMap xTs₁ ]) = do let process (TString x, _T₁) = do- _T₀ <- decode _T₁+ _T₀ <- decodeMaybe _T₁ return (x, _T₀) process _ =@@ -635,11 +661,11 @@ xTs₀ <- traverse process xTs₁ return (Union (Dhall.Map.fromList xTs₀))-decode (TList [ TInt 12, TString x, t₁, TMap yTs₁ ]) = do- t₀ <- decode t₁+decodeMaybe (TList [ TInt 12, TString x, t₁, TMap yTs₁ ]) = do+ t₀ <- decodeMaybe t₁ let process (TString y, _T₁) = do- _T₀ <- decode _T₁+ _T₀ <- decodeMaybe _T₁ return (y, _T₀) process _ =@@ -648,35 +674,31 @@ yTs₀ <- traverse process yTs₁ return (UnionLit x t₀ (Dhall.Map.fromList yTs₀))-decode (TList [ TInt 13, u₁ ]) = do- u₀ <- decode u₁-- return (Constructors u₀)-decode (TBool b) = do+decodeMaybe (TBool b) = do return (BoolLit b)-decode (TList [ TInt 14, t₁, l₁, r₁ ]) = do- t₀ <- decode t₁- l₀ <- decode l₁- r₀ <- decode r₁+decodeMaybe (TList [ TInt 14, t₁, l₁, r₁ ]) = do+ t₀ <- decodeMaybe t₁+ l₀ <- decodeMaybe l₁+ r₀ <- decodeMaybe r₁ return (BoolIf t₀ l₀ r₀)-decode (TList [ TInt 15, TInt n ]) = do+decodeMaybe (TList [ TInt 15, TInt n ]) = do return (NaturalLit (fromIntegral n))-decode (TList [ TInt 15, TInteger n ]) = do+decodeMaybe (TList [ TInt 15, TInteger n ]) = do return (NaturalLit (fromInteger n))-decode (TList [ TInt 16, TInt n ]) = do+decodeMaybe (TList [ TInt 16, TInt n ]) = do return (IntegerLit (fromIntegral n))-decode (TList [ TInt 16, TInteger n ]) = do+decodeMaybe (TList [ TInt 16, TInteger n ]) = do return (IntegerLit n)-decode (THalf n) = do+decodeMaybe (THalf n) = do return (DoubleLit (float2Double n))-decode (TFloat n) = do+decodeMaybe (TFloat n) = do return (DoubleLit (float2Double n))-decode (TDouble n) = do+decodeMaybe (TDouble n) = do return (DoubleLit n)-decode (TList (TInt 18 : xs)) = do+decodeMaybe (TList (TInt 18 : xs)) = do let process (TString x : y₁ : zs) = do- y₀ <- decode y₁+ y₀ <- decodeMaybe y₁ ~(xys, z) <- process zs @@ -689,7 +711,7 @@ (xys, z) <- process xs return (TextLit (Chunks xys z))-decode (TList (TInt 24 : h : TInt mode : TInt n : xs)) = do+decodeMaybe (TList (TInt 24 : h : TInt mode : TInt n : xs)) = do hash <- case h of TNull -> do return Nothing@@ -733,7 +755,7 @@ headers₁ <- case headers₀ of TNull -> return Nothing _ -> do- Embed (Import { importHashed = headers }) <- decode headers₀+ Embed (Import { importHashed = headers }) <- decodeMaybe headers₀ return (Just headers) (paths, file, query, fragment) <- process ys return (headers₁, authority, paths, file, query, fragment)@@ -783,19 +805,19 @@ let importHashed = ImportHashed {..} return (Embed (Import {..}))-decode (TList (TInt 25 : xs)) = do+decodeMaybe (TList (TInt 25 : xs)) = do let process (TString x : _A₁ : a₁ : ls₁) = do mA₀ <- case _A₁ of TNull -> return Nothing- _ -> fmap Just (decode _A₁)+ _ -> fmap Just (decodeMaybe _A₁) - a₀ <- decode a₁+ a₀ <- decodeMaybe a₁ let binding = Binding x mA₀ a₀ case ls₁ of [ b₁ ] -> do- b₀ <- decode b₁+ b₀ <- decodeMaybe b₁ return (Let (binding :| []) b₀) _ -> do@@ -806,47 +828,30 @@ empty process xs-decode (TList [ TInt 26, t₁, _T₁ ]) = do- t₀ <- decode t₁- _T₀ <- decode _T₁+decodeMaybe (TList [ TInt 26, t₁, _T₁ ]) = do+ t₀ <- decodeMaybe t₁+ _T₀ <- decodeMaybe _T₁ return (Annot t₀ _T₀)-decode _ =+decodeMaybe _ = empty -{-| Decode a Dhall expression-- This auto-detects which standard version to decode based on the included- standard version string in the decoded expression--}-decodeWithVersion :: Term -> Either DecodingFailure (Expr s Import)-decodeWithVersion term = do- (version, subTerm) <- case term of- TList [ TString version, subTerm ] ->- return (version, subTerm)- _ ->- fail ("Cannot decode the version from this decoded CBOR expression: " <> show term)-- case version of- "5.0.0" -> do- return ()- _ -> do- fail ("This decoded version is not supported: " <> Data.Text.unpack version)-- case decode subTerm of- Nothing ->- fail ("This decoded CBOR expression does not represent a valid Dhall expression: " <> show subTerm)- Just expression ->- return expression+-- | Decode a Dhall expression from a CBOR `Term`+decode :: Term -> Either DecodingFailure (Expr s Import)+decode term =+ case decodeWithoutVersion <|> decodeWithVersion of+ Just expression -> Right expression+ Nothing -> Left (CBORIsNotDhall term)+ where+ -- This is the behavior specified by the standard+ decodeWithoutVersion = decodeMaybe term --- | Encode a Dhall expression using the specified `Version`-encodeWithVersion :: StandardVersion -> Expr s Import -> Term-encodeWithVersion V_5_0_0 expression =- TList [ TString "5.0.0", encode expression ]+ -- For backwards compatibility with older expressions that have a version+ -- tag to ease the migration+ decodeWithVersion = do+ TList [ TString _, taggedTerm ] <- return term+ decodeMaybe taggedTerm -data DecodingFailure- = CannotDecodeVersionString Term- | UnsupportedVersionString Text- | CBORIsNotDhall Term+data DecodingFailure = CBORIsNotDhall Term deriving (Eq) instance Exception DecodingFailure@@ -855,25 +860,6 @@ _ERROR = "\ESC[1;31mError\ESC[0m" instance Show DecodingFailure where- show (CannotDecodeVersionString term) =- _ERROR <> ": Cannot decode version string\n"- <> "\n"- <> "This CBOR expression does not contain a version string in any\n"- <> "recognizable format\n"- <> "\n"- <> "↳ " <> show term <> "\n"- show (UnsupportedVersionString version) =- _ERROR <> ": Unsupported version string\n"- <> "\n"- <> "The encoded Dhall expression was tagged with a version string of:\n"- <> "\n"- <> "↳ " <> show version <> "\n"- <> "\n"- <> "... but this implementation cannot decode that version\n"- <> "\n"- <> "Some common reasons why you might get this error:\n"- <> "\n"- <> "● You are using an old version of the interpreter and need to upgrade\n" show (CBORIsNotDhall term) = _ERROR <> ": Cannot decode CBOR to Dhall\n" <> "\n"
@@ -87,12 +87,14 @@ import qualified Control.Monad import qualified Crypto.Hash+import qualified Data.Char import qualified Data.HashSet import qualified Data.Sequence import qualified Data.Text import qualified Data.Text.Prettyprint.Doc as Pretty import qualified Dhall.Map import qualified Dhall.Set+import qualified Text.Printf {-| Constants for a pure type system @@ -405,6 +407,8 @@ | TextLit (Chunks s a) -- | > TextAppend x y ~ x ++ y | TextAppend (Expr s a) (Expr s a)+ -- | > TextShow ~ Text/show+ | TextShow -- | > List ~ List | List -- | > ListLit (Just t ) [x, y, z] ~ [x, y, z] : List t@@ -456,8 +460,6 @@ -- | > Merge x y (Just t ) ~ merge x y : t -- > Merge x y Nothing ~ merge x y | Merge (Expr s a) (Expr s a) (Maybe (Expr s a))- -- | > Constructors e ~ constructors e- | Constructors (Expr s a) -- | > Field e x ~ e.x | Field (Expr s a) Text -- | > Project e xs ~ e.{ xs }@@ -510,6 +512,7 @@ fmap _ Text = Text fmap f (TextLit cs) = TextLit (fmap f cs) fmap f (TextAppend e1 e2) = TextAppend (fmap f e1) (fmap f e2)+ fmap _ TextShow = TextShow fmap _ List = List fmap f (ListLit maybeE seqE) = ListLit (fmap (fmap f) maybeE) (fmap (fmap f) seqE) fmap f (ListAppend e1 e2) = ListAppend (fmap f e1) (fmap f e2)@@ -534,7 +537,6 @@ fmap f (CombineTypes e1 e2) = CombineTypes (fmap f e1) (fmap f e2) fmap f (Prefer e1 e2) = Prefer (fmap f e1) (fmap f e2) fmap f (Merge e1 e2 maybeE) = Merge (fmap f e1) (fmap f e2) (fmap (fmap f) maybeE)- fmap f (Constructors e1) = Constructors (fmap f e1) fmap f (Field e1 v) = Field (fmap f e1) v fmap f (Project e1 vs) = Project (fmap f e1) vs fmap f (Note s e1) = Note s (fmap f e1)@@ -587,6 +589,7 @@ Text >>= _ = Text TextLit (Chunks a b) >>= k = TextLit (Chunks (fmap (fmap (>>= k)) a) b) TextAppend a b >>= k = TextAppend (a >>= k) (b >>= k)+ TextShow >>= _ = TextShow List >>= _ = List ListLit a b >>= k = ListLit (fmap (>>= k) a) (fmap (>>= k) b) ListAppend a b >>= k = ListAppend (a >>= k) (b >>= k)@@ -611,7 +614,6 @@ CombineTypes a b >>= k = CombineTypes (a >>= k) (b >>= k) Prefer a b >>= k = Prefer (a >>= k) (b >>= k) Merge a b c >>= k = Merge (a >>= k) (b >>= k) (fmap (>>= k) c)- Constructors a >>= k = Constructors (a >>= k) Field a b >>= k = Field (a >>= k) b Project a b >>= k = Project (a >>= k) b Note a b >>= k = Note a (b >>= k)@@ -654,6 +656,7 @@ first _ Text = Text first k (TextLit (Chunks a b)) = TextLit (Chunks (fmap (fmap (first k)) a) b) first k (TextAppend a b ) = TextAppend (first k a) (first k b)+ first _ TextShow = TextShow first _ List = List first k (ListLit a b ) = ListLit (fmap (first k) a) (fmap (first k) b) first k (ListAppend a b ) = ListAppend (first k a) (first k b)@@ -678,7 +681,6 @@ first k (CombineTypes a b ) = CombineTypes (first k a) (first k b) first k (Prefer a b ) = Prefer (first k a) (first k b) first k (Merge a b c ) = Merge (first k a) (first k b) (fmap (first k) c)- first k (Constructors a ) = Constructors (first k a) first k (Field a b ) = Field (first k a) b first k (Project a b ) = Project (first k a) b first k (Note a b ) = Note (k a) (first k b)@@ -828,14 +830,15 @@ b₁ = shift d (V x₀ n₁) b₀ shift d (V x₀ n₀) (Let (Binding x₁ mA₀ a₀ :| (l₀ : ls₀)) b₀) =- Let (Binding x₁ mA₁ a₁ :| (l₁ : ls₁)) b₁+ case shift d (V x₀ n₁) (Let (l₀ :| ls₀) b₀) of+ Let (l₁ :| ls₁) b₁ -> Let (Binding x₁ mA₁ a₁ :| (l₁ : ls₁)) b₁+ e -> Let (Binding x₁ mA₁ a₁ :| [] ) e where n₁ = if x₀ == x₁ then n₀ + 1 else n₀ mA₁ = fmap (shift d (V x₀ n₀)) mA₀ a₁ = shift d (V x₀ n₀) a₀ - Let (l₁ :| ls₁) b₁ = shift d (V x₀ n₁) (Let (l₀ :| ls₀) b₀) shift d v (Annot a b) = Annot a' b' where a' = shift d v a@@ -895,6 +898,7 @@ where a' = shift d v a b' = shift d v b+shift _ _ TextShow = TextShow shift _ _ List = List shift d v (ListLit a b) = ListLit a' b' where@@ -952,9 +956,6 @@ a' = shift d v a b' = shift d v b c' = fmap (shift d v) c-shift d v (Constructors a) = Constructors a'- where- a' = shift d v a shift d v (Field a b) = Field a' b where a' = shift d v a@@ -1005,7 +1006,9 @@ b₁ = subst (V x₀ n₁) e₁ b₀ subst (V x₀ n₀) e₀ (Let (Binding x₁ mA₀ a₀ :| (l₀ : ls₀)) b₀) =- Let (Binding x₁ mA₁ a₁ :| (l₁ : ls₁)) b₁+ case subst (V x₀ n₁) e₁ (Let (l₀ :| ls₀) b₀) of+ Let (l₁ :| ls₁) b₁ -> Let (Binding x₁ mA₁ a₁ :| (l₁ : ls₁)) b₁+ e -> Let (Binding x₁ mA₁ a₁ :| [] ) e where n₁ = if x₀ == x₁ then n₀ + 1 else n₀ @@ -1014,7 +1017,6 @@ mA₁ = fmap (subst (V x₀ n₀) e₀) mA₀ a₁ = subst (V x₀ n₀) e₀ a₀ - Let (l₁ :| ls₁) b₁ = subst (V x₀ n₁) e₁ (Let (l₀ :| ls₀) b₀) subst x e (Annot a b) = Annot a' b' where a' = subst x e a@@ -1074,6 +1076,7 @@ where a' = subst x e a b' = subst x e b+subst _ _ TextShow = TextShow subst _ _ List = List subst x e (ListLit a b) = ListLit a' b' where@@ -1122,9 +1125,6 @@ a' = subst x e a b' = subst x e b c' = fmap (subst x e) c-subst x e (Constructors a) = Constructors a'- where- a' = subst x e a subst x e (Field a b) = Field a' b where a' = subst x e a@@ -1201,12 +1201,12 @@ b₁ = alphaNormalize b₀ alphaNormalize (Let (Binding "_" mA₀ a₀ :| (l₀ : ls₀)) b₀) =- Let (Binding "_" mA₁ a₁ :| (l₁ : ls₁)) b₁+ case alphaNormalize (Let (l₀ :| ls₀) b₀) of+ Let (l₁ :| ls₁) b₁ -> Let (Binding "_" mA₁ a₁ :| (l₁ : ls₁)) b₁+ e -> Let (Binding "_" mA₁ a₁ :| [] ) e where mA₁ = fmap alphaNormalize mA₀ a₁ = alphaNormalize a₀-- Let (l₁ :| ls₁) b₁ = alphaNormalize (Let (l₀ :| ls₀) b₀) alphaNormalize (Let (Binding x mA₀ a₀ :| []) b₀) = Let (Binding "_" mA₁ a₁ :| []) b₄ where@@ -1218,7 +1218,9 @@ b₃ = shift (-1) (V x 0) b₂ b₄ = alphaNormalize b₃ alphaNormalize (Let (Binding x mA₀ a₀ :| (l₀ : ls₀)) b₀) =- Let (Binding "_" mA₁ a₁ :| (l₁ : ls₁)) b₄+ case alphaNormalize (Let (l₀ :| ls₀) b₃) of+ Let (l₁ :| ls₁) b₄ -> Let (Binding "_" mA₁ a₁ :| (l₁ : ls₁)) b₄+ e -> Let (Binding "_" mA₁ a₁ :| [] ) e where mA₁ = fmap alphaNormalize mA₀ a₁ = alphaNormalize a₀@@ -1226,8 +1228,6 @@ b₁ = shift 1 (V "_" 0) b₀ b₂ = subst (V x 0) (Var (V "_" 0)) b₁ b₃ = shift (-1) (V x 0) b₂-- Let (l₁ :| ls₁) b₄ = alphaNormalize (Let (l₀ :| ls₀) b₃) alphaNormalize (Annot t₀ _T₀) = Annot t₁ _T₁ where@@ -1329,6 +1329,8 @@ l₁ = alphaNormalize l₀ r₁ = alphaNormalize r₀+alphaNormalize TextShow =+ TextShow alphaNormalize List = List alphaNormalize (ListLit (Just _T₀) ts₀) =@@ -1421,10 +1423,6 @@ u₁ = alphaNormalize u₀ _T₁ = fmap alphaNormalize _T₀-alphaNormalize (Constructors u₀) =- Constructors u₁- where- u₁ = alphaNormalize u₀ alphaNormalize (Field e₀ a) = Field e₁ a where@@ -1519,6 +1517,7 @@ denote Text = Text denote (TextLit (Chunks a b)) = TextLit (Chunks (fmap (fmap denote) a) b) denote (TextAppend a b ) = TextAppend (denote a) (denote b)+denote TextShow = TextShow denote List = List denote (ListLit a b ) = ListLit (fmap denote a) (fmap denote b) denote (ListAppend a b ) = ListAppend (denote a) (denote b)@@ -1543,7 +1542,6 @@ denote (CombineTypes a b ) = CombineTypes (denote a) (denote b) denote (Prefer a b ) = Prefer (denote a) (denote b) denote (Merge a b c ) = Merge (denote a) (denote b) (fmap denote c)-denote (Constructors a ) = Constructors (denote a) denote (Field a b ) = Field (denote a) b denote (Project a b ) = Project (denote a) b denote (ImportAlt a b ) = ImportAlt (denote a) (denote b)@@ -1711,6 +1709,10 @@ loop nothing App (App (App (App (App OptionalFold _) (Some x)) _) just) _ -> loop (App just x)+ App TextShow (TextLit (Chunks [] oldText)) ->+ loop (TextLit (Chunks [] newText))+ where+ newText = textShow oldText _ -> do res2 <- ctx (App f' a') case res2 of@@ -1825,6 +1827,7 @@ decide l (TextLit n) | isEmpty n = l decide (TextLit m) (TextLit n) = TextLit (m <> n) decide l r = TextAppend l r+ TextShow -> pure TextShow List -> pure List ListLit t es | Data.Sequence.null es -> ListLit <$> t' <*> es'@@ -1911,11 +1914,6 @@ _ -> Merge x' y' <$> t' where t' = traverse loop t- Constructors t -> do- t' <- loop t- case t' of- u@(Union _) -> pure u- _ -> pure $ Constructors t' Field r x -> do r' <- loop r case r' of@@ -1951,6 +1949,19 @@ ImportAlt l _r -> loop l Embed a -> pure (Embed a) +textShow :: Text -> Text+textShow text = "\"" <> Data.Text.concatMap f text <> "\""+ where+ f '"' = "\\\""+ f '$' = "\\u0024"+ f '\\' = "\\\\"+ f '\b' = "\\b"+ f '\n' = "\\n"+ f '\r' = "\\r"+ f '\t' = "\\t"+ f c | c <= '\x1F' = Data.Text.pack (Text.Printf.printf "\\u%04d" (Data.Char.ord c))+ | otherwise = Data.Text.singleton c+ {-| Returns `True` if two expressions are α-equivalent and β-equivalent and `False` otherwise -}@@ -2022,6 +2033,8 @@ False App (App (App (App (App OptionalFold _) (App None _)) _) _) _ -> False+ App TextShow (TextLit (Chunks [] _)) ->+ False _ -> True Let _ _ -> False Annot _ _ -> False@@ -2099,6 +2112,7 @@ decide _ (TextLit n) | isEmpty n = False decide (TextLit _) (TextLit _) = False decide _ _ = True+ TextShow -> True List -> True ListLit t es -> all loop t && all loop es ListAppend x y -> loop x && loop y && decide x y@@ -2152,11 +2166,6 @@ Nothing -> True _ -> True _ -> True- Constructors t -> loop t &&- case t of- Union _ -> False- _ -> True- Field r x -> loop r && case r of RecordLit kvs ->@@ -2254,6 +2263,7 @@ , "Double" , "Double/show" , "Text"+ , "Text/show" , "List" , "List/build" , "List/fold"@@ -2312,6 +2322,7 @@ subExpressions f (TextLit (Chunks a b)) = TextLit <$> (Chunks <$> traverse (traverse f) a <*> pure b) subExpressions f (TextAppend a b) = TextAppend <$> f a <*> f b+subExpressions _ TextShow = pure TextShow subExpressions _ List = pure List subExpressions f (ListLit a b) = ListLit <$> traverse f a <*> traverse f b subExpressions f (ListAppend a b) = ListAppend <$> f a <*> f b@@ -2336,7 +2347,6 @@ subExpressions f (CombineTypes a b) = CombineTypes <$> f a <*> f b subExpressions f (Prefer a b) = Prefer <$> f a <*> f b subExpressions f (Merge a b t) = Merge <$> f a <*> f b <*> traverse f t-subExpressions f (Constructors a) = Constructors <$> f a subExpressions f (Field a b) = Field <$> f a <*> pure b subExpressions f (Project a b) = Project <$> f a <*> pure b subExpressions f (Note a b) = Note a <$> f b
@@ -642,10 +642,6 @@ <> ignore <> " " <> ignore-skeleton (Constructors {}) =- keyword "constructors"- <> " "- <> ignore skeleton (Field {}) = ignore <> dot@@ -974,12 +970,6 @@ where docs (App aL bL) (App aR bR) = Data.List.NonEmpty.cons (diffImportExpression bL bR) (docs aL aR)- docs (Constructors aL) (Constructors aR) =- diffImportExpression aL aR :| [ keyword "constructors" ]- docs aL aR@(Constructors {}) =- pure (mismatch aL aR)- docs aL@(Constructors {}) aR =- pure (mismatch aL aR) docs (Some aL) (Some aR) = diffImportExpression aL aR :| [ builtin "Some" ] docs aL aR@(Some {}) =@@ -992,12 +982,6 @@ mismatch l r diffApplicationExpression l r@(App {}) = mismatch l r-diffApplicationExpression (Constructors l) (Constructors r) =- enclosed' mempty mempty (keyword "constructors" :| [ diffImportExpression l r ])-diffApplicationExpression l@(Constructors {}) r =- mismatch l r-diffApplicationExpression l r@(Constructors {}) =- mismatch l r diffApplicationExpression (Some l) (Some r) = enclosed' mempty mempty (builtin "Some" :| [ diffImportExpression l r ]) diffApplicationExpression l@(Some {}) r =@@ -1149,6 +1133,12 @@ diffPrimitiveExpression l@Text r = mismatch l r diffPrimitiveExpression l r@Text =+ mismatch l r+diffPrimitiveExpression TextShow TextShow =+ "…"+diffPrimitiveExpression l@TextShow r =+ mismatch l r+diffPrimitiveExpression l r@TextShow = mismatch l r diffPrimitiveExpression List List = "…"
@@ -1,63 +1,114 @@+{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-} -- | This module contains the implementation of the @dhall format@ subcommand module Dhall.Format ( -- * Format- format+ Format(..)+ , FormatMode(..)+ , format ) where +import Control.Exception (Exception)+import Control.Monad.IO.Class (MonadIO(..)) import Dhall.Parser (exprAndHeaderFromText) import Dhall.Pretty (CharacterSet(..), annToAnsiStyle, layoutOpts) import Data.Monoid ((<>)) import qualified Data.Text.Prettyprint.Doc as Pretty-import qualified Data.Text.Prettyprint.Doc.Render.Terminal as Pretty+import qualified Data.Text.Prettyprint.Doc.Render.Terminal as Pretty.Terminal+import qualified Data.Text.Prettyprint.Doc.Render.Text as Pretty.Text import qualified Control.Exception import qualified Data.Text.IO import qualified Dhall.Pretty import qualified System.Console.ANSI import qualified System.IO +data NotFormatted = NotFormatted+ deriving (Exception)++instance Show NotFormatted where+ show _ = ""++-- | Arguments to the `format` subcommand+data Format = Format+ { characterSet :: CharacterSet+ , formatMode :: FormatMode+ }++{-| The `format` subcommand can either `Modify` its input or simply `Check`+ that the input is already formatted+-}+data FormatMode+ = Modify+ { inplace :: Maybe FilePath+ -- ^ Modify file in-place if present, otherwise read from @stdin@ and+ -- write to @stdout@+ }+ | Check+ { path :: Maybe FilePath+ -- ^ Read from the given file if present, otherwise read from @stdin@+ }+ -- | Implementation of the @dhall format@ subcommand format- :: CharacterSet- -> Maybe FilePath- -- ^ Modify file in-place if present, otherwise read from @stdin@ and write- -- to @stdout@+ :: Format -> IO ()-format characterSet inplace = do- case inplace of- Just file -> do- text <- Data.Text.IO.readFile file- (header, expr) <- case exprAndHeaderFromText "(stdin)" text of- Left err -> Control.Exception.throwIO err- Right x -> return x+format (Format {..}) =+ case formatMode of+ Modify {..} ->+ case inplace of+ Just file -> do+ text <- Data.Text.IO.readFile file - let doc = Pretty.pretty header- <> Pretty.unAnnotate (Dhall.Pretty.prettyCharacterSet characterSet expr)- System.IO.withFile file System.IO.WriteMode (\handle -> do- Pretty.renderIO handle (Pretty.layoutSmart layoutOpts doc)- Data.Text.IO.hPutStrLn handle "" )- Nothing -> do- inText <- Data.Text.IO.getContents+ (header, expr) <- throws (exprAndHeaderFromText "(stdin)" text) - (header, expr) <- case exprAndHeaderFromText "(stdin)" inText of- Left err -> Control.Exception.throwIO err- Right x -> return x+ let doc = Pretty.pretty header+ <> Pretty.unAnnotate (Dhall.Pretty.prettyCharacterSet characterSet expr)+ <> "\n"+ System.IO.withFile file System.IO.WriteMode (\handle -> do+ Pretty.Terminal.renderIO handle (Pretty.layoutSmart layoutOpts doc))+ Nothing -> do+ inText <- Data.Text.IO.getContents - let doc = Pretty.pretty header- <> Dhall.Pretty.prettyCharacterSet characterSet expr+ (header, expr) <- throws (exprAndHeaderFromText "(stdin)" inText) - supportsANSI <- System.Console.ANSI.hSupportsANSI System.IO.stdout+ let doc = Pretty.pretty header+ <> Dhall.Pretty.prettyCharacterSet characterSet expr+ <> "\n" - if supportsANSI- then- Pretty.renderIO- System.IO.stdout- (fmap annToAnsiStyle (Pretty.layoutSmart layoutOpts doc))- else- Pretty.renderIO- System.IO.stdout- (Pretty.layoutSmart layoutOpts (Pretty.unAnnotate doc))+ supportsANSI <- System.Console.ANSI.hSupportsANSI System.IO.stdout++ if supportsANSI+ then+ Pretty.Terminal.renderIO+ System.IO.stdout+ (fmap annToAnsiStyle (Pretty.layoutSmart layoutOpts doc))+ else+ Pretty.Terminal.renderIO+ System.IO.stdout+ (Pretty.layoutSmart layoutOpts (Pretty.unAnnotate doc))+ Check {..} -> do+ originalText <- case path of+ Just file -> Data.Text.IO.readFile file+ Nothing -> Data.Text.IO.getContents++ (header, expr) <- throws (exprAndHeaderFromText "(stdin)" originalText)++ let doc = Pretty.pretty header+ <> Pretty.unAnnotate (Dhall.Pretty.prettyCharacterSet characterSet expr)+ <> "\n"++ let formattedText =+ Pretty.Text.renderStrict (Pretty.layoutSmart layoutOpts doc)++ if originalText == formattedText+ then return ()+ else Control.Exception.throwIO NotFormatted++throws :: (Exception e, MonadIO io) => Either e a -> io a+throws (Left e) = liftIO (Control.Exception.throwIO e)+throws (Right a) = return a
@@ -5,7 +5,8 @@ module Dhall.Freeze ( -- * Freeze freeze- , hashImport+ , freezeImport+ , freezeRemoteImport ) where import Control.Exception (SomeException)@@ -13,7 +14,7 @@ import Data.Maybe (fromMaybe) import Data.Text import Dhall.Binary (StandardVersion(..))-import Dhall.Core (Expr(..), Import(..), ImportHashed(..))+import Dhall.Core (Expr(..), Import(..), ImportHashed(..), ImportType(..)) import Dhall.Import (standardVersion) import Dhall.Parser (exprAndHeaderFromText, Src) import Dhall.Pretty (annToAnsiStyle, layoutOpts)@@ -33,13 +34,13 @@ import qualified System.IO -- | Retrieve an `Import` and update the hash to match the latest contents-hashImport+freezeImport :: FilePath -- ^ Current working directory -> StandardVersion -> Import -> IO Import-hashImport directory _standardVersion import_ = do+freezeImport directory _standardVersion import_ = do let unprotectedImport = import_ { importHashed =@@ -47,8 +48,12 @@ { hash = Nothing } }- let status = set standardVersion _standardVersion (Dhall.Import.emptyStatus directory) + let status =+ set standardVersion+ _standardVersion+ (Dhall.Import.emptyStatus directory)+ let download = State.evalStateT (Dhall.Import.loadWith (Embed import_)) status @@ -77,6 +82,18 @@ return newImport +-- | Freeze an import only if the import is a `Remote` import+freezeRemoteImport+ :: FilePath+ -- ^ Current working directory+ -> StandardVersion+ -> Import+ -> IO Import+freezeRemoteImport directory _standardVersion import_ = do+ case importType (importHashed import_) of+ Remote {} -> freezeImport directory _standardVersion import_+ _ -> return import_+ parseExpr :: String -> Text -> IO (Text, Expr Src Import) parseExpr src txt = case exprAndHeaderFromText src txt of@@ -107,9 +124,11 @@ :: Maybe FilePath -- ^ Modify file in-place if present, otherwise read from @stdin@ and write -- to @stdout@+ -> Bool+ -- ^ If `True` then freeze all imports, otherwise freeze only remote imports -> StandardVersion -> IO ()-freeze inplace _standardVersion = do+freeze inplace everything _standardVersion = do (text, directory) <- case inplace of Nothing -> do text <- Data.Text.IO.getContents@@ -122,7 +141,10 @@ return (text, System.FilePath.takeDirectory file) (header, parsedExpression) <- parseExpr srcInfo text- frozenExpression <- traverse (hashImport directory _standardVersion) parsedExpression++ let freezeFunction = if everything then freezeImport else freezeRemoteImport++ frozenExpression <- traverse (freezeFunction directory _standardVersion) parsedExpression writeExpr inplace (header, frozenExpression) where srcInfo = fromMaybe "(stdin)" inplace
@@ -128,7 +128,7 @@ ) where import Control.Applicative (Alternative(..))-import Codec.CBOR.Term (Term)+import Codec.CBOR.Term (Term(..)) import Control.Exception (Exception, SomeException, throwIO, toException) import Control.Monad (guard) import Control.Monad.Catch (throwM, MonadCatch(catch), catches, Handler(..))@@ -137,7 +137,7 @@ import Crypto.Hash (SHA256) import Data.CaseInsensitive (CI) import Data.List.NonEmpty (NonEmpty(..))-import Data.Semigroup (sconcat, (<>))+import Data.Semigroup (Semigroup(..)) import Data.Text (Text) #if MIN_VERSION_base(4,8,0) #else@@ -167,7 +167,7 @@ import Dhall.Import.Types import Text.Dot ((.->.), userNodeId) -import Dhall.Parser (Parser(..), ParseError(..), Src(..))+import Dhall.Parser (Parser(..), ParseError(..), Src(..), SourcedException(..)) import Dhall.TypeCheck (X(..)) import Lens.Family.State.Strict (zoom) @@ -255,14 +255,16 @@ instance Exception e => Exception (Imported e) instance Show e => Show (Imported e) where- show (Imported imports e) =+ show (Imported canonicalizedImports e) = concat (zipWith indent [0..] toDisplay) ++ "\n" ++ show e where indent n import_ = "\n" ++ replicate (2 * n) ' ' ++ "↳ " ++ Dhall.Pretty.Internal.prettyToString import_- canonical = NonEmpty.toList (canonicalizeAll imports)++ canonical = NonEmpty.toList canonicalizedImports+ -- Tthe final (outermost) import is fake to establish the base -- directory. Also, we need outermost-first. toDisplay = drop 1 (reverse canonical)@@ -278,7 +280,6 @@ "\n" <> "\ESC[1;31mError\ESC[0m: Missing file " <> path- <> "\n" -- | Exception thrown when an environment variable is missing newtype MissingEnvironmentVariable = MissingEnvironmentVariable { name :: Text }@@ -302,19 +303,16 @@ show (MissingImports []) = "\n" <> "\ESC[1;31mError\ESC[0m: No valid imports"- <> "\n" show (MissingImports [e]) = show e show (MissingImports es) = "\n" <> "\ESC[1;31mError\ESC[0m: Failed to resolve imports. Error list:" <> "\n" <> concatMap (\e -> "\n" <> show e <> "\n") es- <> "\n" throwMissingImport :: (MonadCatch m, Exception e) => e -> m a throwMissingImport e = throwM (MissingImports [(toException e)]) - -- | Exception thrown when a HTTP url is imported but dhall was built without -- the @with-http@ Cabal flag. data CannotImportHTTPURL =@@ -336,15 +334,12 @@ <> url <> "\n" -canonicalizeAll :: NonEmpty Import -> NonEmpty Import-canonicalizeAll = NonEmpty.scanr1 step- where- step a parent = canonicalizeImport (a :| [parent])- {-|-> canonicalize (canonicalize x) = canonicalize x+> canonicalize . canonicalize = canonicalize++> canonicalize (a <> b) = canonicalize a <> canonicalize b -}-class Canonicalize path where+class Semigroup path => Canonicalize path where canonicalize :: path -> path -- |@@ -395,10 +390,6 @@ canonicalize (Import importHashed importMode) = Import (canonicalize importHashed) importMode -canonicalizeImport :: NonEmpty Import -> Import-canonicalizeImport imports =- canonicalize (sconcat (NonEmpty.reverse imports))- toHeaders :: Expr s a -> Maybe [(CI Data.ByteString.ByteString, Data.ByteString.ByteString)]@@ -490,7 +481,7 @@ term <- throws (Codec.Serialise.deserialiseOrFail bytesLazy) - throws (Dhall.Binary.decodeWithVersion term)+ throws (Dhall.Binary.decode term) case result of Just expression -> return expression@@ -527,16 +518,22 @@ expression ) - let bytes = encodeExpression _standardVersion normalizedExpression+ let check version = do+ let bytes = encodeExpression version normalizedExpression - let actualHash = Crypto.Hash.hash bytes+ let actualHash = Crypto.Hash.hash bytes - if expectedHash == actualHash- then return ()- else liftIO (Control.Exception.throwIO (HashMismatch {..}))+ guard (expectedHash == actualHash) - liftIO (Data.ByteString.writeFile cacheFile bytes)+ liftIO (Data.ByteString.writeFile cacheFile bytes) + let fallback = do+ let actualHash = hashExpression NoVersion normalizedExpression++ liftIO (Control.Exception.throwIO (HashMismatch {..}))++ Data.Foldable.asum (map check [ minBound .. maxBound ]) <|> fallback+ return () getCacheFile@@ -572,8 +569,6 @@ cacheDirectory <- getCacheDirectory - assertDirectory cacheDirectory- let dhallDirectory = cacheDirectory </> "dhall" assertDirectory dhallDirectory@@ -582,22 +577,23 @@ return cacheFile -getCacheDirectory :: MonadIO io => io FilePath-#if MIN_VERSION_directory(1,2,3)-getCacheDirectory = liftIO (Directory.getXdgDirectory Directory.XdgCache "")-#else-getCacheDirectory = liftIO $ do- maybeXDGCacheHome <- System.Environment.lookupEnv "XDG_CACHE_HOME"+getCacheDirectory :: (Alternative m, MonadIO m) => m FilePath+getCacheDirectory = alternative₀ <|> alternative₁+ where+ alternative₀ = do+ maybeXDGCacheHome <- do+ liftIO (System.Environment.lookupEnv "XDG_CACHE_HOME") - case maybeXDGCacheHome of- Nothing -> do- homeDirectory <- Directory.getHomeDirectory+ case maybeXDGCacheHome of+ Just xdgCacheHome -> return xdgCacheHome+ Nothing -> empty - return (homeDirectory </> ".cache")+ alternative₁ = do+ maybeHomeDirectory <- liftIO (System.Environment.lookupEnv "HOME") - Just xdgCacheHome -> do- return xdgCacheHome-#endif+ case maybeHomeDirectory of+ Just homeDirectory -> return (homeDirectory </> ".cache")+ Nothing -> empty exprFromUncachedImport :: Import -> StateT (Status IO) IO (Expr Src Import) exprFromUncachedImport (Import {..}) = do@@ -715,34 +711,38 @@ -} loadWith :: MonadCatch m => Expr Src Import -> StateT (Status m) m (Expr Src X) loadWith expr₀ = case expr₀ of- Embed import_ -> do+ Embed import₀ -> do Status {..} <- State.get - let imports = _stack+ let parent = NonEmpty.head _stack + let import₁ = parent <> import₀++ let child = canonicalize import₁+ let local (Import (ImportHashed _ (Remote {})) _) = False local (Import (ImportHashed _ (Local {})) _) = True local (Import (ImportHashed _ (Env {})) _) = True local (Import (ImportHashed _ (Missing {})) _) = True - let parent = canonicalizeImport imports- let imports' = NonEmpty.cons import_ imports- let here = canonicalizeImport imports'+ let referentiallySane = not (local child) || local parent - if local here && not (local parent)- then throwMissingImport (Imported imports (ReferentiallyOpaque import_))- else return ()+ if referentiallySane+ then return ()+ else throwMissingImport (Imported _stack (ReferentiallyOpaque import₀)) - expr <- if here `elem` canonicalizeAll imports- then throwMissingImport (Imported imports (Cycle import_))+ let _stack' = NonEmpty.cons child _stack++ expr <- if child `elem` _stack+ then throwMissingImport (Imported _stack (Cycle import₀)) else do- case Map.lookup here _cache of- Just (hereNode, expr) -> do+ case Map.lookup child _cache of+ Just (childNode, expr) -> do zoom dot . State.modify $ \getDot -> do parentNode <- getDot - -- Add edge between parent and here- parentNode .->. hereNode+ -- Add edge between parent and child+ parentNode .->. childNode -- Return parent NodeId pure parentNode@@ -764,7 +764,7 @@ throwM (MissingImports (map- (\e -> toException (Imported imports' e))+ (\e -> toException (Imported _stack' e)) es ) )@@ -774,39 +774,39 @@ => SomeException -> StateT (Status m) m (Expr Src Import) handler₁ e =- throwMissingImport (Imported imports' e)+ throwMissingImport (Imported _stack' e) -- This loads a \"dynamic\" expression (i.e. an expression -- that might still contain imports)- let loadDynamic = _resolver here+ let loadDynamic = _resolver child expr' <- loadDynamic `catches` [ Handler handler₀, Handler handler₁ ] - let hereNodeId = userNodeId _nextNodeId+ let childNodeId = userNodeId _nextNodeId -- Increment the next node id zoom nextNodeId $ State.modify succ -- Make current node the dot graph- zoom dot . State.put $ importNode hereNodeId here+ zoom dot . State.put $ importNode childNodeId child - zoom stack (State.put imports')+ zoom stack (State.put _stack') expr'' <- loadWith expr'- zoom stack (State.put imports)+ zoom stack (State.put _stack) zoom dot . State.modify $ \getSubDot -> do parentNode <- _dot -- Get current node back from sub-graph- hereNode <- getSubDot+ childNode <- getSubDot - -- Add edge between parent and here- parentNode .->. hereNode+ -- Add edge between parent and child+ parentNode .->. childNode -- Return parent NodeId pure parentNode - _cacher here expr''+ _cacher child expr'' -- Type-check expressions here for three separate reasons: --@@ -819,30 +819,40 @@ -- There is no need to check expressions that have been -- cached, since they have already been checked expr''' <- case Dhall.TypeCheck.typeWith _startingContext expr'' of- Left err -> throwM (Imported imports' err)+ Left err -> throwM (Imported _stack' err) Right _ -> return (Dhall.Core.normalizeWith (getReifiedNormalizer _normalizer) expr'')- zoom cache (State.modify' (Map.insert here (hereNodeId, expr''')))+ zoom cache (State.modify' (Map.insert child (childNodeId, expr'''))) return expr''' - case hash (importHashed import_) of+ case hash (importHashed import₀) of Nothing -> do return () Just expectedHash -> do- let actualHash =- hashExpression _standardVersion (Dhall.Core.alphaNormalize expr)+ let matches version =+ let actualHash =+ hashExpression version (Dhall.Core.alphaNormalize expr) - if expectedHash == actualHash+ in expectedHash == actualHash++ if any matches [ minBound .. maxBound ] then return ()- else throwMissingImport (Imported imports' (HashMismatch {..}))+ else do+ let actualHash =+ hashExpression NoVersion (Dhall.Core.alphaNormalize expr) + throwMissingImport (Imported _stack' (HashMismatch {..}))+ return expr ImportAlt a b -> loadWith a `catch` handler₀ where- handler₀ (MissingImports es₀) =- loadWith b `catch` handler₁+ handler₀ (SourcedException (Src begin _ text₀) (MissingImports es₀)) =+ loadWith b `catch` handler₁ where- handler₁ (MissingImports es₁) =- throwM (MissingImports (es₀ ++ es₁))+ handler₁ (SourcedException (Src _ end text₁) (MissingImports es₁)) =+ throwM (SourcedException (Src begin end text₂) (MissingImports (es₀ ++ es₁)))+ where+ text₂ = text₀ <> " ? " <> text₁+ Const a -> pure (Const a) Var a -> pure (Var a) Lam a b c -> Lam <$> pure a <*> loadWith b <*> loadWith c@@ -880,6 +890,7 @@ Text -> pure Text TextLit (Chunks a b) -> fmap TextLit (Chunks <$> mapM (mapM loadWith) a <*> pure b) TextAppend a b -> TextAppend <$> loadWith a <*> loadWith b+ TextShow -> pure TextShow List -> pure List ListLit a b -> ListLit <$> mapM loadWith a <*> mapM loadWith b ListAppend a b -> ListAppend <$> loadWith a <*> loadWith b@@ -904,34 +915,46 @@ CombineTypes a b -> CombineTypes <$> loadWith a <*> loadWith b Prefer a b -> Prefer <$> loadWith a <*> loadWith b Merge a b c -> Merge <$> loadWith a <*> loadWith b <*> mapM loadWith c- Constructors a -> Constructors <$> loadWith a Field a b -> Field <$> loadWith a <*> pure b Project a b -> Project <$> loadWith a <*> pure b- Note a b -> Note <$> pure a <*> loadWith b+ Note a b -> do+ let handler e = throwM (SourcedException a (e :: MissingImports)) + (Note <$> pure a <*> loadWith b) `catch` handler+ -- | Resolve all imports within an expression load :: Expr Src Import -> IO (Expr Src X) load expression = State.evalStateT (loadWith expression) (emptyStatus ".") encodeExpression- :: forall s . StandardVersion -> Expr s X -> Data.ByteString.ByteString+ :: forall s+ . StandardVersion+ -- ^ `Nothing` means to encode without the version tag+ -> Expr s X+ -> Data.ByteString.ByteString encodeExpression _standardVersion expression = bytesStrict where intermediateExpression :: Expr s Import intermediateExpression = fmap absurd expression term :: Term- term =- Dhall.Binary.encodeWithVersion- _standardVersion- intermediateExpression+ term = Dhall.Binary.encode intermediateExpression - bytesLazy = Codec.Serialise.serialise term+ taggedTerm :: Term+ taggedTerm =+ case _standardVersion of+ NoVersion -> term+ s -> TList [ TString v, term ]+ where+ v = Dhall.Binary.renderStandardVersion s + bytesLazy = Codec.Serialise.serialise taggedTerm+ bytesStrict = Data.ByteString.Lazy.toStrict bytesLazy -- | Hash a fully resolved expression-hashExpression :: StandardVersion -> Expr s X -> (Crypto.Hash.Digest SHA256)+hashExpression+ :: StandardVersion -> Expr s X -> (Crypto.Hash.Digest SHA256) hashExpression _standardVersion expression = Crypto.Hash.hash (encodeExpression _standardVersion expression)
@@ -57,19 +57,19 @@ "\n" <> "\ESC[1;31mError\ESC[0m: Invalid remote host name\n" <> "\n"- <> "↳ " <> show host <> "\n"+ <> "↳ " <> show host ResponseTimeout -> "\n"- <> "\ESC[1;31mError\ESC[0m: The remote host took too long to respond\n"+ <> "\ESC[1;31mError\ESC[0m: The remote host took too long to respond" StatusCodeException response _ | statusCode == 404 -> "\n"- <> "\ESC[1;31mError\ESC[0m: Remote file not found\n"+ <> "\ESC[1;31mError\ESC[0m: Remote file not found" | otherwise -> "\n" <> "\ESC[1;31mError\ESC[0m: Unexpected HTTP status code:\n" <> "\n"- <> "↳ " <> show statusCode <> "\n"+ <> "↳ " <> show statusCode where statusCode = Network.HTTP.Types.Status.statusCode
@@ -3,12 +3,16 @@ module Dhall.Lint ( -- * Lint lint+ , removeLetInLet+ , removeUnusedBindings+ , optionalLitToSomeNone ) where -import Dhall.Core (Binding(..), Chunks(..), Expr(..), Import, Var(..))-import Data.Semigroup ((<>))+import Control.Monad (mplus) import Data.List.NonEmpty (NonEmpty(..))-import Dhall.TypeCheck (X(..))+import Data.Semigroup ((<>))+import Dhall.Core (Binding(..), Expr(..), Import, Var(..), subExpressions)+import Lens.Family (ASetter, over) import qualified Dhall.Core @@ -16,240 +20,49 @@ Currently this: - * removes unused @let@ bindings- * consolidates nested @let@ bindings to use a multiple-@let@ binding- * switches legacy @List@-like @Optional@ literals to use @Some@ / @None@ instead- * removes the `constructors` keyword+ * removes unused @let@ bindings with 'removeLetInLet'.+ * consolidates nested @let@ bindings to use a multiple-@let@ binding with 'removeUnusedBindings'.+ * switches legacy @List@-like @Optional@ literals to use @Some@ / @None@ instead with 'optionalLitToSomeNone' -} lint :: Expr s Import -> Expr t Import-lint expression = loop (Dhall.Core.denote expression)+lint =+ rewriteOf+ subExpressions+ ( \e ->+ removeLetInLet e+ `mplus` removeUnusedBindings e+ `mplus` optionalLitToSomeNone e+ )+ . Dhall.Core.denote++removeLetInLet :: Eq a => Expr s a -> Maybe (Expr s a)+removeLetInLet (Let a (Let b c)) = Just (Let (a <> b) c)+removeLetInLet _ = Nothing++removeUnusedBindings :: Eq a => Expr s a -> Maybe (Expr s a)+removeUnusedBindings (Let (Binding a _ _ :| []) d)+ | not (V a 0 `Dhall.Core.freeIn` d) =+ Just d+ | otherwise =+ Nothing+removeUnusedBindings (Let (Binding a _ _ :| (l : ls)) d)+ | not (V a 0 `Dhall.Core.freeIn` e) =+ Just e+ | otherwise =+ Nothing where- loop (Const a) =- Const a- loop (Var a) =- Var a- loop (Lam a b c) = Lam a b' c'- where- b' = loop b- c' = loop c- loop (Pi a b c) = Pi a b' c'- where- b' = loop b- c' = loop c- loop (App a b) = App a' b'- where- a' = loop a- b' = loop b+ e = Let (l :| ls) d+removeUnusedBindings _ = Nothing - -- Consolidate nested `let` expresssions- loop (Let a (Let b c)) = loop (Let (a <> b) c) - -- Remove unused bindings- loop (Let (Binding a b c :| []) d)- | not (V a 0 `Dhall.Core.freeIn` d') =- d'- | otherwise =- Let (Binding a b' c' :| []) d'- where- b' = fmap loop b- c' = loop c+optionalLitToSomeNone :: Expr s a -> Maybe (Expr s a)+optionalLitToSomeNone (OptionalLit _ (Just b)) = Just (Some b)+optionalLitToSomeNone (OptionalLit a Nothing) = Just (App None a)+optionalLitToSomeNone _ = Nothing - d' = loop d- loop (Let (Binding a b c :| (l : ls)) d)- | not (V a 0 `Dhall.Core.freeIn` Let (l' :| ls') d') =- Let (l' :| ls') d'- | otherwise =- Let (Binding a b' c' :| (l' : ls')) d'- where- b' = fmap loop b- c' = loop c - Let (l' :| ls') d' = loop (Let (l :| ls) d)+rewriteOf :: ASetter a b a b -> (b -> Maybe a) -> a -> b+rewriteOf l f = go where go = transformOf l (\x -> maybe x go (f x)) - loop (Annot a b) =- Annot a' b'- where- a' = loop a- b' = loop b- loop Bool =- Bool- loop (BoolLit a) =- BoolLit a- loop (BoolAnd a b) =- BoolAnd a' b'- where- a' = loop a- b' = loop b- loop (BoolOr a b) =- BoolOr a' b'- where- a' = loop a- b' = loop b- loop (BoolEQ a b) =- BoolEQ a' b'- where- a' = loop a- b' = loop b- loop (BoolNE a b) =- BoolNE a' b'- where- a' = loop a- b' = loop b- loop (BoolIf a b c) =- BoolIf a' b' c'- where- a' = loop a- b' = loop b- c' = loop c- loop Natural =- Natural- loop (NaturalLit a) =- NaturalLit a- loop NaturalFold =- NaturalFold- loop NaturalBuild =- NaturalBuild- loop NaturalIsZero =- NaturalIsZero- loop NaturalEven =- NaturalEven- loop NaturalOdd =- NaturalOdd- loop NaturalToInteger =- NaturalToInteger- loop NaturalShow =- NaturalShow- loop (NaturalPlus a b) =- NaturalPlus a' b'- where- a' = loop a- b' = loop b- loop (NaturalTimes a b) =- NaturalTimes a' b'- where- a' = loop a- b' = loop b- loop Integer =- Integer- loop (IntegerLit a) =- IntegerLit a- loop IntegerShow =- IntegerShow- loop IntegerToDouble =- IntegerToDouble- loop Double =- Double- loop (DoubleLit a) =- DoubleLit a- loop DoubleShow =- DoubleShow- loop Text =- Text- loop (TextLit (Chunks a b)) =- TextLit (Chunks a' b)- where- a' = fmap (fmap loop) a- loop (TextAppend a b) =- TextAppend a' b'- where- a' = loop a- b' = loop b- loop List =- List- loop (ListLit a b) =- ListLit a' b'- where- a' = fmap loop a- b' = fmap loop b- loop (ListAppend a b) =- ListAppend a' b'- where- a' = loop a- b' = loop b- loop ListBuild =- ListBuild- loop ListFold =- ListFold- loop ListLength =- ListLength- loop ListHead =- ListHead- loop ListLast =- ListLast- loop ListIndexed =- ListIndexed- loop ListReverse =- ListReverse- loop Optional =- Optional- loop (Some a) =- Some a'- where- a' = loop a- loop None =- None- loop (OptionalLit _ (Just b)) =- loop (Some b)- loop (OptionalLit a Nothing) =- loop (App None a)- loop OptionalFold =- OptionalFold- loop OptionalBuild =- OptionalBuild- loop (Record a) =- Record a'- where- a' = fmap loop a- loop (RecordLit a) =- RecordLit a'- where- a' = fmap loop a- loop (Union a) =- Union a'- where- a' = fmap loop a- loop (UnionLit a b c) =- UnionLit a b' c'- where- b' = loop b- c' = fmap loop c- loop (Combine a b) =- Combine a' b'- where- a' = loop a- b' = loop b- loop (CombineTypes a b) =- CombineTypes a' b'- where- a' = loop a- b' = loop b- loop (Prefer a b) =- Prefer a' b'- where- a' = loop a- b' = loop b- loop (Merge a b c) =- Merge a' b' c'- where- a' = loop a- b' = loop b- c' = fmap loop c- loop (Constructors a) =- loop a- loop (Field a b) =- Field a' b- where- a' = loop a- loop (Project a b) =- Project a' b- where- a' = loop a- loop (Note a _) =- absurd a- loop (ImportAlt a b) =- ImportAlt a' b'- where- a' = loop a- b' = loop b- loop (Embed a) =- Embed a+transformOf :: ASetter a b a b -> (b -> b) -> a -> b+transformOf l f = go where go = f . over l go
@@ -70,6 +70,7 @@ import qualified System.Console.ANSI import qualified System.IO import qualified Text.Dot+import qualified Data.Map -- | Top-level program options data Options = Options@@ -84,18 +85,24 @@ data Mode = Default { annotate :: Bool } | Version- | Resolve { dot :: Bool }+ | Resolve { resolveMode :: Maybe ResolveMode } | Type | Normalize | Repl- | Format { inplace :: Maybe FilePath }- | Freeze { inplace :: Maybe FilePath }+ | Format { formatMode :: Dhall.Format.FormatMode }+ | Freeze { inplace :: Maybe FilePath, all_ :: Bool } | Hash | Diff { expr1 :: Text, expr2 :: Text } | Lint { inplace :: Maybe FilePath } | Encode { json :: Bool } | Decode { json :: Bool } +data ResolveMode+ = Dot+ | ListTransitiveDependencies+ | ListImmediateDependencies++ -- | `Parser` for the `Options` type parseOptions :: Parser Options parseOptions =@@ -134,7 +141,7 @@ <|> subcommand "resolve" "Resolve an expression's imports"- (Resolve <$> parseDot)+ (Resolve <$> parseResolveMode) <|> subcommand "type" "Infer an expression's type"@@ -162,11 +169,11 @@ <|> subcommand "format" "Formatter for the Dhall language"- (Format <$> optional parseInplace)+ (Format <$> parseFormatMode) <|> subcommand "freeze"- "Add hashes to all import statements of an expression"- (Freeze <$> optional parseInplace)+ "Add integrity checks to remote import statements of an expression"+ (Freeze <$> optional parseInplace <*> parseAllFlag) <|> subcommand "encode" "Encode a Dhall expression to binary"@@ -186,12 +193,25 @@ Options.Applicative.switch (Options.Applicative.long "annotate") - parseDot =- Options.Applicative.switch- ( Options.Applicative.long "dot"- <> Options.Applicative.help- "Output import dependency graph in dot format"- )+ parseResolveMode =+ Options.Applicative.flag' (Just Dot)+ ( Options.Applicative.long "dot"+ <> Options.Applicative.help+ "Output import dependency graph in dot format"+ )+ <|>+ Options.Applicative.flag' (Just ListImmediateDependencies)+ ( Options.Applicative.long "immediate-dependencies"+ <> Options.Applicative.help+ "List immediate import dependencies"+ )+ <|>+ Options.Applicative.flag' (Just ListTransitiveDependencies)+ ( Options.Applicative.long "transitive-dependencies"+ <> Options.Applicative.help+ "List transitive import dependencies"+ )+ <|> pure Nothing parseInplace = Options.Applicative.strOption@@ -206,6 +226,23 @@ <> Options.Applicative.help "Use JSON representation of CBOR" ) + parseAllFlag =+ Options.Applicative.switch+ ( Options.Applicative.long "all"+ <> Options.Applicative.help "Add integrity checks to all imports (not just remote imports)"+ )++ parseCheck =+ Options.Applicative.switch+ ( Options.Applicative.long "check"+ <> Options.Applicative.help "Only check if the input is formatted"+ )++ parseFormatMode = adapt <$> parseCheck <*> optional parseInplace+ where+ adapt True path = Dhall.Format.Check {..}+ adapt False inplace = Dhall.Format.Modify {..}+ throws :: Exception e => Either e a -> IO a throws (Left e) = Control.Exception.throwIO e throws (Right a) = return a@@ -262,8 +299,12 @@ Control.Exception.throwIO (Imported ps e) handler2 e = do- let _ = e :: SomeException- System.IO.hPrint System.IO.stderr e+ let string = show (e :: SomeException)++ if not (null string)+ then System.IO.hPutStrLn System.IO.stderr string+ else return ()+ System.Exit.exitFailure let renderDoc :: Handle -> Doc Ann -> IO ()@@ -287,8 +328,15 @@ handle $ case mode of Version -> do- putStrLn (showVersion Meta.version)+ let line₀ = "Haskell package version: "+ <> Data.Text.pack (showVersion Meta.version) + let line₁ = "Standard version: "+ <> Dhall.Binary.renderStandardVersion Dhall.Binary.defaultStandardVersion++ Data.Text.IO.putStrLn line₀+ Data.Text.IO.putStrLn line₁+ Default {..} -> do expression <- getExpression @@ -305,17 +353,43 @@ render System.IO.stdout annotatedExpression - Resolve dot -> do+ Resolve (Just Dot) -> do expression <- getExpression - (resolvedExpression, Dhall.Import.Types.Status { _dot }) <-- State.runStateT (Dhall.Import.loadWith expression) status+ (Dhall.Import.Types.Status { _dot}) <-+ State.execStateT (Dhall.Import.loadWith expression) status - if dot- then putStr . ("strict " <>) . Text.Dot.showDot $- Text.Dot.attribute ("rankdir", "LR") >> _dot- else render System.IO.stdout resolvedExpression+ putStr . ("strict " <>) . Text.Dot.showDot $+ Text.Dot.attribute ("rankdir", "LR") >>+ _dot + Resolve (Just ListImmediateDependencies) -> do+ expression <- getExpression++ mapM_ (print+ . Pretty.pretty+ . Dhall.Core.importHashed) expression++ Resolve (Just ListTransitiveDependencies) -> do+ expression <- getExpression++ (Dhall.Import.Types.Status { _cache }) <-+ State.execStateT (Dhall.Import.loadWith expression) status++ mapM_ print+ . fmap ( Pretty.pretty+ . Dhall.Core.importType+ . Dhall.Core.importHashed )+ . Data.Map.keys+ $ _cache++ Resolve (Nothing) -> do+ expression <- getExpression++ (resolvedExpression, _) <-+ State.runStateT (Dhall.Import.loadWith expression) status+ render System.IO.stdout resolvedExpression+ Normalize -> do expression <- getExpression @@ -347,10 +421,10 @@ renderDoc System.IO.stdout diff Format {..} -> do- Dhall.Format.format characterSet inplace+ Dhall.Format.format (Dhall.Format.Format {..}) Freeze {..} -> do- Dhall.Freeze.freeze inplace standardVersion+ Dhall.Freeze.freeze inplace all_ standardVersion Hash -> do Dhall.Hash.hash standardVersion@@ -385,7 +459,7 @@ Encode {..} -> do expression <- getExpression - let term = Dhall.Binary.encodeWithVersion standardVersion expression+ let term = Dhall.Binary.encode expression let bytes = Codec.Serialise.serialise term @@ -419,7 +493,7 @@ else do throws (Codec.Serialise.deserialiseOrFail bytes) - expression <- throws (Dhall.Binary.decodeWithVersion term)+ expression <- throws (Dhall.Binary.decode term) let doc = Dhall.Pretty.prettyCharacterSet characterSet expression
@@ -12,6 +12,7 @@ -- * Types , Src(..)+ , SourcedException(..) , ParseError(..) , Parser(..) ) where
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}@@ -6,6 +7,7 @@ import Control.Applicative (Alternative (..), liftA2)+import Control.Exception (Exception) import Control.Monad (MonadPlus (..)) import Data.Data (Data) import Data.Semigroup (Semigroup (..))@@ -25,7 +27,10 @@ import qualified Data.Sequence import qualified Data.Set import qualified Data.Text+import qualified Data.Text.Prettyprint.Doc as Pretty+import qualified Data.Text.Prettyprint.Doc.Render.String as Pretty import qualified Dhall.Map+import qualified Dhall.Pretty import qualified Dhall.Util import qualified Dhall.Set import qualified Text.Megaparsec@@ -38,6 +43,18 @@ data Src = Src !Text.Megaparsec.SourcePos !Text.Megaparsec.SourcePos Text -- Text field is intentionally lazy deriving (Data, Eq, Show)++data SourcedException e = SourcedException Src e++instance Exception e => Exception (SourcedException e)++instance Show e => Show (SourcedException e) where+ show (SourcedException source exception) =+ show exception+ <> "\n"+ <> "\n"+ <> Pretty.renderString+ (Pretty.layoutPretty Dhall.Pretty.layoutOpts (pretty source)) -- | Doesn't force the 'Text' part laxSrcEq :: Src -> Src -> Bool
@@ -134,8 +134,9 @@ case (shallowDenote a, shallowDenote b) of (ListLit _ xs, App f c) -> case shallowDenote f of- List ->- return (ListLit (Just c) xs)+ List -> case xs of+ [] -> return (ListLit (Just c) xs)+ _ -> return (Annot a b) Optional -> case xs of [x] -> return (OptionalLit c (Just x)) [] -> return (OptionalLit c Nothing)@@ -175,9 +176,9 @@ CombineTypes <$ _combineTypes <|> Prefer <$ _prefer <|> NaturalTimes <$ _times- <|> BoolNE <$ _notEqual+ <|> BoolEQ <$ _doubleEqual - precedence3Operator = BoolEQ <$ _doubleEqual+ precedence3Operator = BoolNE <$ _notEqual precedence0Expression = makeOperatorExpression precedence1Expression precedence0Operator@@ -192,8 +193,7 @@ makeOperatorExpression applicationExpression precedence3Operator applicationExpression = do- f <- (do _constructors; return Constructors)- <|> (do _Some; return Some)+ f <- (do _Some; return Some) <|> return id a <- noted importExpression b <- Text.Megaparsec.many (noted importExpression)@@ -346,7 +346,8 @@ 'S' -> Const Sort <$ _Sort 'T' -> choice- [ Text <$ _Text+ [ TextShow <$ _TextShow+ , Text <$ _Text , BoolLit True <$ _True , Const Type <$ _Type ]
@@ -53,6 +53,7 @@ _Integer, _Double, _Text,+ _TextShow, _List, _True, _False,@@ -110,6 +111,7 @@ import qualified Data.Text import qualified Dhall.Set import qualified Text.Megaparsec+import qualified Text.Megaparsec.Char.Lexer import qualified Text.Parser.Char import qualified Text.Parser.Combinators @@ -159,13 +161,15 @@ integerLiteral :: Parser Integer integerLiteral = (do sign <- signPrefix- a <- Text.Parser.Token.natural+ a <- Text.Megaparsec.Char.Lexer.decimal+ whitespace return (sign a) ) <?> "integer literal" naturalLiteral :: Parser Natural naturalLiteral = (do- a <- Text.Parser.Token.natural- return (fromIntegral a) ) <?> "natural literal"+ a <- Text.Megaparsec.Char.Lexer.decimal+ whitespace+ return a ) <?> "natural literal" identifier :: Parser Var identifier = do@@ -173,7 +177,9 @@ let indexed = do _ <- Text.Parser.Char.char '@'- Text.Parser.Token.natural+ n <- Text.Megaparsec.Char.Lexer.decimal+ whitespace+ return n n <- indexed <|> pure 0 return (V x n)@@ -330,7 +336,7 @@ quotedPathCharacter c = ('\x20' <= c && c <= '\x21') || ('\x23' <= c && c <= '\x2E')- || ('\x30' <= c && c <= '\x7E')+ || ('\x30' <= c && c <= '\x10FFFF') pathComponent :: Parser Text pathComponent = do@@ -620,6 +626,9 @@ _Text :: Parser () _Text = reserved "Text"++_TextShow :: Parser ()+_TextShow = reserved "Text/show" _List :: Parser () _List = reserved "List"
@@ -195,13 +195,31 @@ -- | Pretty-print anonymous functions and function types arrows :: CharacterSet -> [(Doc Ann, Doc Ann)] -> Doc Ann-arrows characterSet =+arrows ASCII = enclose' ""+ " "+ (" " <> rarrow ASCII <> " ")+ (rarrow ASCII <> " ")+arrows Unicode =+ enclose'+ "" " "- (" " <> rarrow characterSet <> " ")- (rarrow characterSet <> space)+ (" " <> rarrow Unicode <> " ")+ (rarrow Unicode <> " ") +combine :: CharacterSet -> Text+combine ASCII = "/\\"+combine Unicode = "∧"++combineTypes :: CharacterSet -> Text+combineTypes ASCII = "//\\\\"+combineTypes Unicode = "⩓"++prefer :: CharacterSet -> Text+prefer ASCII = "//"+prefer Unicode = "⫽"+ {-| Format an expression that holds a variable number of elements, such as a list, record, or union -}@@ -612,7 +630,7 @@ prettyCombineExpression :: Pretty a => Expr s a -> Doc Ann prettyCombineExpression a0@(Combine _ _) =- prettyOperator "∧" (docs a0)+ prettyOperator (combine characterSet) (docs a0) where docs (Combine a b) = prettyPreferExpression b : docs a docs (Note _ b) = docs b@@ -624,7 +642,7 @@ prettyPreferExpression :: Pretty a => Expr s a -> Doc Ann prettyPreferExpression a0@(Prefer _ _) =- prettyOperator "⫽" (docs a0)+ prettyOperator (prefer characterSet) (docs a0) where docs (Prefer a b) = prettyCombineTypesExpression b : docs a docs (Note _ b) = docs b@@ -636,7 +654,7 @@ prettyCombineTypesExpression :: Pretty a => Expr s a -> Doc Ann prettyCombineTypesExpression a0@(CombineTypes _ _) =- prettyOperator "⩓" (docs a0)+ prettyOperator (combineTypes characterSet) (docs a0) where docs (CombineTypes a b) = prettyTimesExpression b : docs a docs (Note _ b) = docs b@@ -684,19 +702,17 @@ prettyApplicationExpression :: Pretty a => Expr s a -> Doc Ann prettyApplicationExpression a0 = case a0 of- App _ _ -> result- Constructors _ -> result- Some _ -> result- Note _ b -> prettyApplicationExpression b- _ -> prettyImportExpression a0+ App _ _ -> result+ Some _ -> result+ Note _ b -> prettyApplicationExpression b+ _ -> prettyImportExpression a0 where result = enclose' "" "" " " "" (fmap duplicate (reverse (docs a0))) - docs (App a b) = prettyImportExpression b : docs a- docs (Constructors b) = [ prettyImportExpression b , keyword "constructors" ]- docs (Some a) = [ prettyImportExpression a , builtin "Some" ]- docs (Note _ b) = docs b- docs b = [ prettyImportExpression b ]+ docs (App a b) = prettyImportExpression b : docs a+ docs (Some a) = [ prettyImportExpression a , builtin "Some" ]+ docs (Note _ b) = docs b+ docs b = [ prettyImportExpression b ] prettyImportExpression :: Pretty a => Expr s a -> Doc Ann prettyImportExpression (Embed a) =@@ -751,6 +767,8 @@ builtin "Double/show" prettyPrimitiveExpression Text = builtin "Text"+ prettyPrimitiveExpression TextShow =+ builtin "Text/show" prettyPrimitiveExpression List = builtin "List" prettyPrimitiveExpression ListBuild =
@@ -11,24 +11,29 @@ ) where import Control.Exception ( SomeException(SomeException), displayException, throwIO )+import Control.Monad ( forM_ ) import Control.Monad.IO.Class ( MonadIO, liftIO ) import Control.Monad.State.Class ( MonadState, get, modify ) import Control.Monad.State.Strict ( evalStateT )-import Data.List ( elemIndex, isPrefixOf, nub )+import Data.List ( isPrefixOf, nub ) import Data.List.NonEmpty (NonEmpty(..))+import Data.Maybe ( mapMaybe ) import Data.Semigroup ((<>))+import Data.Text ( Text ) import Dhall.Binary (StandardVersion(..)) import Dhall.Context (Context)-import Dhall.Import (standardVersion)+import Dhall.Import (hashExpressionToCode, standardVersion) import Dhall.Pretty (CharacterSet(..)) import Lens.Family (set) import System.Console.Haskeline (Interrupt(..)) import System.Console.Haskeline.Completion ( Completion, simpleCompletion )+import System.Directory ( getDirectoryContents ) import System.Environment ( getEnvironment ) import qualified Control.Monad.Trans.State.Strict as State import qualified Data.HashSet import qualified Data.Text as Text+import qualified Data.Text.IO as Text.IO import qualified Data.Text.Prettyprint.Doc as Pretty import qualified Data.Text.Prettyprint.Doc.Render.Terminal as Pretty ( renderIO ) import qualified Dhall@@ -74,6 +79,7 @@ , explain :: Bool , characterSet :: CharacterSet , _standardVersion :: StandardVersion+ , outputHandle :: Maybe System.IO.Handle } @@ -85,6 +91,7 @@ , explain = False , _standardVersion = Dhall.Binary.defaultStandardVersion , characterSet = Unicode+ , outputHandle = Just System.IO.stdout } @@ -138,14 +145,12 @@ modify ( \e -> e { envIt = Just ( Binding expr exprType ) } ) - output System.IO.stdout expr+ output expr typeOf :: ( MonadIO m, MonadState Env m ) => [String] -> m ()-typeOf [] =- liftIO ( putStrLn ":type requires an argument to check the type of" )-+typeOf [] = fail ":type requires an argument to check the type of" typeOf srcs = do loaded <-@@ -157,7 +162,7 @@ exprType' <- normalize exprType - output System.IO.stdout exprType'+ output exprType' applyContext@@ -202,20 +207,15 @@ -- Separate the equal sign to be its own word in order to simplify parsing -- This is intended to be used with the options that require assignment separateEqual :: [String] -> [String]-separateEqual [] = []-separateEqual (x:xs)- -- Handle the case where there is no space between the var and "="- | Just i <- elemIndex '=' x- = let (a, _:b) = splitAt i x- in a : "=" : b : xs-- -- Handle the case where there is no space between the "=" and the expression- | ('=':y):ys <- xs- = x : "=" : y : ys-- | otherwise- = x : xs-+separateEqual [] =+ []+separateEqual (str₀ : ('=' : str₁) : strs) =+ str₀ : "=" : str₁ : strs+separateEqual (str : strs)+ | (str₀, '=' : str₁) <- break (== '=') str =+ str₀ : "=" : str₁ : strs+ | otherwise =+ str : strs addBinding :: ( MonadIO m, MonadState Env m ) => [String] -> m () addBinding (k : "=" : srcs) = do@@ -243,14 +243,125 @@ } ) - output- System.IO.stdout- ( Expr.Annot ( Expr.Var ( Dhall.V varName 0 ) ) t )+ output ( Expr.Annot ( Expr.Var ( Dhall.V varName 0 ) ) t ) -addBinding _ =- liftIO ( fail ":let should be of the form `:let x = y`" )+addBinding _ = fail ":let should be of the form `:let x = y`" +hashBinding :: ( MonadIO m, MonadState Env m ) => [String] -> m ()+hashBinding [] = fail ":hash should be of the form `:hash expr"+hashBinding tokens = do+ loadedExpression <- parseAndLoad (unwords tokens)++ _ <- typeCheck loadedExpression++ normalizedExpression <- normalize loadedExpression++ Env{_standardVersion} <- get++ writeOutputHandle $ hashExpressionToCode _standardVersion normalizedExpression++saveFilePrefix :: FilePath+saveFilePrefix = ".dhall-repl"++-- | Find the index for the current _active_ dhall save file+currentSaveFileIndex :: MonadIO m => m (Maybe Int)+currentSaveFileIndex = do+ files <- liftIO $ getDirectoryContents "."++ let parseIndex file+ | saveFilePrefix `isPrefixOf` file+ , '-':index <- drop (length saveFilePrefix) file+ , [(x, "")] <- reads index -- safe version of read+ = Just x++ | otherwise+ = Nothing++ pure $ case mapMaybe parseIndex files of+ [] -> Nothing+ xs -> Just $ maximum xs++-- | Find the name for the current _active_ dhall save file+currentSaveFile :: MonadIO m => m (Maybe FilePath)+currentSaveFile =+ (fmap . fmap) (\i -> saveFilePrefix <> "-" <> show i) currentSaveFileIndex++-- | Find the name for the next dhall save file+nextSaveFile :: MonadIO m => m FilePath+nextSaveFile = do+ mIndex <- currentSaveFileIndex++ let nextIndex = maybe 0 succ mIndex++ pure $ saveFilePrefix <> "-" <> show nextIndex++loadBinding+ :: ( MonadIO m, MonadState Env m, Haskeline.MonadException m )+ => [String] -> m ()+loadBinding [] = do+ mFile <- currentSaveFile++ case mFile of+ Just file -> loadBinding [file]+ Nothing ->+ fail $ ":load couldn't find any `" <> saveFilePrefix <> "-*` files"++loadBinding [file] = do+ -- Read commands from the save file+ replLines <- map words . lines <$> liftIO (readFile file)++ let runCommand ((c:cmd):opts)+ | c == optionsPrefix+ , Just action <- lookup cmd options+ = action opts+ runCommand _ = fail $+ ":load expects `" <> file <> "` to contain one command per line"++ -- Keep current handle in scope+ Env { outputHandle } <- get++ -- Discard output+ modify (\e -> e { outputHandle = Nothing })++ -- Run all the commands+ forM_ replLines runCommand++ -- Restore the previous handle+ modify (\e -> e { outputHandle = outputHandle })++ writeOutputHandle $ "Loaded `" <> Text.pack file <> "`\n"++loadBinding _ = fail ":load should be of the form `:load` or `:load file`"+ saveBinding :: ( MonadIO m, MonadState Env m ) => [String] -> m ()+-- Save all the bindings into a context save file+saveBinding [] = do+ file <- nextSaveFile++ saveBinding [file]++-- Save all the bindings into `file`+saveBinding [file] = do+ env <- get++ let bindings+ = reverse+ . (fmap . fmap) bindingExpr+ . Dhall.Context.toList+ $ envBindings env++ handler handle =+ State.evalStateT+ (forM_ bindings $ \(name, expr) -> do+ liftIO (System.IO.hPutStr handle $ ":let " <> Text.unpack name <> " = ")+ outputWithoutSpacing expr)+ (env { outputHandle = Just handle })++ liftIO (System.IO.withFile file System.IO.WriteMode handler)++ writeOutputHandle $ "Context saved to `" <> Text.pack file <> "`\n"++-- Save a single expression to `file` saveBinding (file : "=" : tokens) = do loadedExpression <- parseAndLoad (unwords tokens) @@ -261,11 +372,28 @@ env <- get let handler handle =- State.evalStateT (output handle normalizedExpression) env+ State.evalStateT+ (output normalizedExpression)+ (env { outputHandle = Just handle }) liftIO (System.IO.withFile file System.IO.WriteMode handler)-saveBinding _ = fail ":save should be of the form `:save x = y`" + writeOutputHandle $ "Expression saved to `" <> Text.pack file <> "`\n"++saveBinding _ = fail ":save should be of the form `:save`, `:save file`, or `:save file = expr`"++setOption :: ( MonadIO m, MonadState Env m ) => [String] -> m ()+setOption [ "--explain" ] = do+ modify (\e -> e { explain = True })+setOption _ = do+ writeOutputHandle ":set should be of the form `:set <command line option>`"++unsetOption :: ( MonadIO m, MonadState Env m ) => [String] -> m ()+unsetOption [ "--explain" ] = do+ modify (\e -> e { explain = False })+unsetOption _ = do+ writeOutputHandle ":unset should be of the form `:unset <command line option>`"+ cmdQuit :: ( MonadIO m, MonadState Env m ) => [String] -> m () cmdQuit _ = do liftIO (putStrLn "Goodbye.")@@ -281,8 +409,12 @@ => Repline.Options m options = [ ( "type", dontCrash . typeOf )+ , ( "hash", dontCrash . hashBinding ) , ( "let", dontCrash . addBinding . separateEqual )+ , ( "load", dontCrash . loadBinding ) , ( "save", dontCrash . saveBinding . separateEqual )+ , ( "set", dontCrash . setOption)+ , ( "unset", dontCrash . unsetOption) , ( "quit", cmdQuit ) ] @@ -309,6 +441,10 @@ | reversedPrev == ":" = pure . listCompletion $ fst <$> (options :: Repline.Options Repl) + -- Complete load command+ | reversedPrev == reverse ":load "+ = Haskeline.listFiles word+ -- Complete file paths | any (`isPrefixOf` word) [ "/", "./", "../", "~/" ] = Haskeline.listFiles word@@ -318,12 +454,11 @@ = listCompletion . fmap fst <$> liftIO getEnvironment -- Complete record fields and union alternatives- | '.' `elem` word+ | var : subFields <- Text.split (== '.') (Text.pack word)+ , not $ null subFields = do Env { envBindings } <- get - let var:subFields = Text.split (== '.') (Text.pack word)- case Dhall.Context.lookup var 0 envBindings of Nothing -> pure []@@ -378,26 +513,42 @@ m ( \ e@SomeException{} -> liftIO ( putStrLn ( displayException e ) ) ) +writeOutputHandle :: (MonadIO m, MonadState Env m) => Text -> m ()+writeOutputHandle txt = do+ Env { outputHandle } <- get + case outputHandle of+ Just handle -> liftIO $ Text.IO.hPutStrLn handle txt+ Nothing -> pure ()+ output- :: (Pretty.Pretty a, MonadState Env m, MonadIO m)- => System.IO.Handle -> Dhall.Expr s a -> m ()-output handle expr = do- Env { characterSet } <- get+ :: (Pretty.Pretty a, MonadState Env m, MonadIO m)+ => Dhall.Expr s a -> m ()+output expr = do+ writeOutputHandle "" -- Visual spacing - liftIO (System.IO.hPutStrLn handle "") -- Visual spacing+ outputWithoutSpacing expr - let stream =- Pretty.layoutSmart Dhall.Pretty.layoutOpts- (Dhall.Pretty.prettyCharacterSet characterSet expr)+ writeOutputHandle "" -- Visual spacing - supportsANSI <- liftIO (System.Console.ANSI.hSupportsANSI handle)- let ansiStream =- if supportsANSI- then fmap Dhall.Pretty.annToAnsiStyle stream- else Pretty.unAnnotateS stream+outputWithoutSpacing+ :: (Pretty.Pretty a, MonadState Env m, MonadIO m)+ => Dhall.Expr s a -> m ()+outputWithoutSpacing expr = do+ Env { characterSet, outputHandle } <- get - liftIO (Pretty.renderIO handle ansiStream)- liftIO (System.IO.hPutStrLn handle "") -- Pretty printing doesn't end with a new line+ case outputHandle of+ Nothing -> pure ()+ Just handle -> do+ let stream =+ Pretty.layoutSmart Dhall.Pretty.layoutOpts+ (Dhall.Pretty.prettyCharacterSet characterSet expr) - liftIO (System.IO.hPutStrLn handle "") -- Visual spacing+ supportsANSI <- liftIO (System.Console.ANSI.hSupportsANSI handle)+ let ansiStream =+ if supportsANSI+ then fmap Dhall.Pretty.annToAnsiStyle stream+ else Pretty.unAnnotateS stream++ liftIO (Pretty.renderIO handle ansiStream)+ liftIO (System.IO.hPutStrLn handle "") -- Pretty printing doesn't end with a new line
@@ -426,6 +426,7 @@ -- ↳ ./file2 -- ... -- Cyclic import: ./file1+-- ... -- -- You can also import expressions by URL. For example, you can find a Dhall -- expression hosted at this GitHub URL:@@ -476,7 +477,7 @@ -- *** Exception: -- ↳ ./baz: -- ...--- ...Error...: Missing file .../baz:+-- ...Error...: Missing file ...baz: -- ... -- -- This is because the parser thinks that @./baz:@ is a single token due to@@ -1143,48 +1144,28 @@ -- -- > data Example = Empty | Person { name :: Text, age :: Text } ----- You can resemble Haskell further by defining convenient constructors for each--- alternative, like this:+-- You could resemble Haskell further by defining convenient constructors for+-- each alternative, like this: ----- > let Empty = < Empty = {=} | Person : { name : Text, age : Natural } >--- > in let Person =--- > λ(p : { name : Text, age : Natural }) → < Person = p | Empty : {} >+-- > let Empty = < Empty = {=} | Person : { name : Text, age : Natural } >+-- > let Person =+-- > λ(p : { name : Text, age : Natural }) → < Person = p | Empty : {} > -- > in [ Empty -- > , Person { name = "John", age = 23 } -- > , Person { name = "Amy" , age = 25 } -- > , Empty -- > ] ----- ... and Dhall even provides the @constructors@ keyword to automate this--- common pattern:+-- ... but there is no need to do so, since the Dhall language auto-generates+-- constructors for each alternative. You can access each constructor as if it+-- were a field of the union type: ----- > let MyType = constructors < Empty : {} | Person : { name : Text, age : Natural } >+-- > let MyType = < Empty : {} | Person : { name : Text, age : Natural } > -- > in [ MyType.Empty {=} -- > , MyType.Person { name = "John", age = 23 } -- > , MyType.Person { name = "Amy" , age = 25 } -- > ] ----- The @constructors@ keyword takes a union type argument and returns a record--- with one field per union type constructor:------ > $ dhall--- > constructors < Empty : {} | Person : { name : Text, age : Natural } >--- > <Ctrl-D>--- >--- > { Empty :--- > ∀(Empty : {}) → < Empty : {} | Person : { age : Natural, name : Text } >--- > , Person :--- > ∀(Person : { age : Natural, name : Text })--- > → < Empty : {} | Person : { age : Natural, name : Text } >--- > }--- >--- > { Empty =--- > λ(Empty : {}) → < Empty = Empty | Person : { age : Natural, name : Text } >--- > , Person =--- > λ(Person : { age : Natural, name : Text })--- > → < Person = Person | Empty : {} >--- > }--- -- You can also extract fields during pattern matching such as in the following -- function which renders each value to `Text`: --@@ -1628,7 +1609,7 @@ -- > z) (y.diff (n + List/length { index : Natural, value : a } kvs)) }) { count = -- > 0, diff = λ(_ : Natural) → nil }).diff 0) ----- ... and run the expression through the the formatter:+-- ... and run the expression through the formatter: -- -- > $ dhall format < ./unformatted -- > λ(a : Type)
@@ -359,6 +359,8 @@ Text -> return () _ -> Left (TypeError ctx e (CantTextAppend r tr)) return Text+ loop _ TextShow = do+ return (Pi "_" Text Text) loop _ List = do return (Pi "_" (Const Type) (Const Type)) loop ctx e@(ListLit Nothing xs) = do@@ -787,13 +789,6 @@ _ -> Left (TypeError ctx e (HandlerNotAFunction kY tX)) mapM_ process (Dhall.Map.toList ktsY) return t- loop ctx e@(Constructors t ) = do- _ <- loop ctx t-- case Dhall.Core.normalize t of- u@(Union _) -> loop ctx u- t' -> Left (TypeError ctx e (ConstructorsRequiresAUnionType t t'))- loop ctx e@(Field r x ) = do t <- fmap Dhall.Core.normalize (loop ctx r) @@ -945,8 +940,7 @@ _NOT = "\ESC[1mnot\ESC[0m" insert :: Pretty a => a -> Doc Ann-insert expression =- "↳ " <> Pretty.align (Dhall.Util.snipDoc (Pretty.pretty expression))+insert = Dhall.Util.insert prettyDiff :: (Eq a, Pretty a) => Expr s a -> Expr s a -> Doc Ann prettyDiff exprL exprR = Dhall.Diff.diffNormalized exprL exprR
@@ -5,11 +5,12 @@ module Dhall.Util ( snip , snipDoc+ , insert ) where import Data.Monoid ((<>)) import Data.Text (Text)-import Data.Text.Prettyprint.Doc (Doc)+import Data.Text.Prettyprint.Doc (Doc, Pretty) import Dhall.Pretty (Ann) import qualified Data.Text@@ -67,3 +68,8 @@ where go (_:xs) (_:ys) = go xs ys go _ r = r++-- | Function to insert an aligned pretty expression+insert :: Pretty a => a -> Doc Ann+insert expression =+ "↳ " <> Pretty.align (snipDoc (Pretty.pretty expression))
@@ -0,0 +1,59 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ScopedTypeVariables #-}+module Dhall.Test.Dhall where++import Control.Exception (SomeException, try)+import Numeric.Natural (Natural)+import Test.Tasty+import Test.Tasty.HUnit++import qualified Dhall+import qualified Dhall.Core+import qualified Dhall.Map++tests :: TestTree+tests =+ testGroup "Input"+ [ shouldShowDetailedTypeError ]++data MyType = MyType { foo :: String , bar :: Natural }++wrongDhallType :: Dhall.Type MyType +wrongDhallType = Dhall.Type { .. }+ where expected =+ Dhall.Core.Record+ ( Dhall.Map.fromList+ [ ( "bar", Dhall.Core.Natural)+ , ( "foo", Dhall.Core.Text )+ ]+ )+ extract _ = Nothing++shouldShowDetailedTypeError :: TestTree+shouldShowDetailedTypeError = testCase "detailed TypeError" $ do+ inputEx :: Either SomeException MyType <-+ try ( Dhall.input wrongDhallType "{ bar = 0, foo = \"foo\" }") ++ let expectedMsg =+ "\ESC[1;31mError\ESC[0m: Invalid Dhall.Type \n\+ \ \n\+ \Every Type must provide an extract function that succeeds if an expression \n\+ \matches the expected type. You provided a Type that disobeys this contract \n\+ \ \n\+ \The Type provided has the expected dhall type: \n\+ \ \n\+ \↳ { bar : Natural, foo : Text }\n\+ \ \n\+ \and it couldn't extract a value from the well-typed expression: \n\+ \ \n\+ \↳ { bar = 0, foo = \"foo\" }\n\+ \ \n"++ let assertMsg = "The exception message did not match the expected output"+ + case inputEx of+ Left ex -> assertEqual assertMsg expectedMsg (show ex)+ Right _ -> fail "The extraction using a wrong type succeded"+ +
@@ -5,6 +5,7 @@ import Data.Text (Text) import Test.Tasty (TestTree) import Dhall.Import (MissingImports(..))+import Dhall.Parser (SourcedException(..)) import Control.Exception (catch, throwIO) import Data.Monoid ((<>)) @@ -23,38 +24,30 @@ [ shouldFail 3 "alternative of several unset env variables"- "./tests/import/failure/alternativeEnv.dhall"+ "./dhall-lang/tests/import/failure/alternativeEnv.dhall" , shouldFail 1 "alternative of env variable and missing"- "./tests/import/failure/alternativeEnvMissing.dhall"+ "./dhall-lang/tests/import/failure/alternativeEnvMissing.dhall" , shouldFail 0 "just missing"- "./tests/import/failure/missing.dhall"+ "./dhall-lang/tests/import/failure/missing.dhall" , shouldNotFail "alternative of env variable, missing, and a Natural"- "./tests/import/success/alternativeEnvNaturalA.dhall"+ "./dhall-lang/tests/import/success/alternativeEnvNaturalA.dhall" , shouldNotFail "alternative of env variable and a Natural"- "./tests/import/success/alternativeEnvSimpleA.dhall"+ "./dhall-lang/tests/import/success/alternativeEnvSimpleA.dhall" , shouldNotFail "alternative of a Natural and missing"- "./tests/import/success/alternativeNaturalA.dhall"+ "./dhall-lang/tests/import/success/alternativeNaturalA.dhall" ] , Test.Tasty.testGroup "import relative to argument" [ shouldNotFailRelative- "works"- "./tests/import/data/foo/bar"- "./tests/import/success/relative.dhall"- , shouldNotFailRelative "a semantic integrity check if fields are reordered"- "./tests/import/success/"- "./tests/import/success/fieldOrderA.dhall"- , shouldNotFailRelative- "a semantic integrity check when importing an expression using `constructors`"- "./tests/import/success/"- "./tests/import/success/issue553B.dhall"+ "./dhall-lang/tests/import/success/"+ "./dhall-lang/tests/import/success/fieldOrderA.dhall" ] ] @@ -88,9 +81,13 @@ (do _ <- Dhall.Import.load actualExpr fail "Import should have failed, but it succeeds")- (\(MissingImports es) -> case length es == failures of- True -> pure ()- False -> fail ("Should have failed "- <> show failures- <> " times, but failed with: \n"- <> show es)) )+ (\(SourcedException _ (MissingImports es)) ->+ case length es == failures of+ True -> pure ()+ False -> fail+ ( "Should have failed "+ <> show failures+ <> " times, but failed with: \n"+ <> show es+ )+ ) )
@@ -22,6 +22,9 @@ [ should "correctly handle multi-let expressions" "success/multilet"+ , should+ "not fail when an inner expression removes all `let` bindings"+ "success/regression0" ] should :: Text -> Text -> TestTree
@@ -1,7 +1,8 @@ module Main where -import Test.Tasty (TestTree)+import Test.Tasty (TestTree) +import qualified Dhall.Test.Dhall import qualified Dhall.Test.Format import qualified Dhall.Test.Import import qualified Dhall.Test.Lint@@ -11,11 +12,13 @@ import qualified Dhall.Test.Regression import qualified Dhall.Test.Tutorial import qualified Dhall.Test.TypeCheck+import qualified GHC.IO.Encoding import qualified System.Directory import qualified System.Environment+import qualified System.IO import qualified Test.Tasty -import System.FilePath ((</>))+import System.FilePath ((</>)) allTests :: TestTree allTests =@@ -29,10 +32,13 @@ , Dhall.Test.Import.tests , Dhall.Test.QuickCheck.tests , Dhall.Test.Lint.tests+ , Dhall.Test.Dhall.tests ] main :: IO () main = do++ GHC.IO.Encoding.setLocaleEncoding System.IO.utf8 pwd <- System.Directory.getCurrentDirectory System.Environment.setEnv "XDG_CACHE_HOME" (pwd </> ".cache") Test.Tasty.defaultMain allTests
@@ -184,6 +184,8 @@ , shouldNormalize "Text/concatMapSep" "./success/prelude/Text/concatMapSep/1" , shouldNormalize "Text/concatSep" "./success/prelude/Text/concatSep/0" , shouldNormalize "Text/concatSep" "./success/prelude/Text/concatSep/1"+ , shouldNormalize "Text/show" "./success/prelude/Text/show/0"+ , shouldNormalize "Text/show" "./success/prelude/Text/show/1" ] simplifications :: TestTree@@ -276,8 +278,8 @@ should :: Text -> Text -> TestTree should name basename = Test.Tasty.HUnit.testCase (Data.Text.unpack name) $ do- let actualCode = "./tests/normalization/" <> basename <> "A.dhall"- let expectedCode = "./tests/normalization/" <> basename <> "B.dhall"+ let actualCode = "./dhall-lang/tests/normalization/" <> basename <> "A.dhall"+ let expectedCode = "./dhall-lang/tests/normalization/" <> basename <> "B.dhall" actualExpr <- case Dhall.Parser.exprFromText mempty actualCode of Left err -> Control.Exception.throwIO err
@@ -2,12 +2,15 @@ module Dhall.Test.Parser where -import Data.Text (Text)-import Test.Tasty (TestTree)+import Data.Text (Text)+import Test.Tasty (TestTree) +import qualified Codec.Serialise import qualified Control.Exception+import qualified Data.ByteString.Lazy import qualified Data.Text import qualified Data.Text.IO+import qualified Dhall.Binary import qualified Dhall.Parser import qualified Test.Tasty import qualified Test.Tasty.HUnit@@ -18,163 +21,168 @@ [ Test.Tasty.testGroup "whitespace" [ shouldParse "prefix/suffix"- "./tests/parser/success/whitespace"+ "./dhall-lang/tests/parser/success/whitespace" , shouldParse "block comment"- "./tests/parser/success/blockComment"+ "./dhall-lang/tests/parser/success/blockComment" , shouldParse "nested block comment"- "./tests/parser/success/nestedBlockComment"+ "./dhall-lang/tests/parser/success/nestedBlockComment" , shouldParse "line comment"- "./tests/parser/success/lineComment"+ "./dhall-lang/tests/parser/success/lineComment" , shouldParse "Unicode comment"- "./tests/parser/success/unicodeComment"+ "./dhall-lang/tests/parser/success/unicodeComment" , shouldParse "whitespace buffet"- "./tests/parser/success/whitespaceBuffet"+ "./dhall-lang/tests/parser/success/whitespaceBuffet" ] , shouldParse "label"- "./tests/parser/success/label"+ "./dhall-lang/tests/parser/success/label" , shouldParse "quoted label"- "./tests/parser/success/quotedLabel"+ "./dhall-lang/tests/parser/success/quotedLabel" , shouldParse "double quoted string"- "./tests/parser/success/doubleQuotedString"+ "./dhall-lang/tests/parser/success/doubleQuotedString" , shouldParse "Unicode double quoted string"- "./tests/parser/success/unicodeDoubleQuotedString"+ "./dhall-lang/tests/parser/success/unicodeDoubleQuotedString" , shouldParse "escaped double quoted string"- "./tests/parser/success/escapedDoubleQuotedString"+ "./dhall-lang/tests/parser/success/escapedDoubleQuotedString" , shouldParse "interpolated double quoted string"- "./tests/parser/success/interpolatedDoubleQuotedString"+ "./dhall-lang/tests/parser/success/interpolatedDoubleQuotedString" , shouldParse "single quoted string"- "./tests/parser/success/singleQuotedString"+ "./dhall-lang/tests/parser/success/singleQuotedString" , shouldParse "escaped single quoted string"- "./tests/parser/success/escapedSingleQuotedString"+ "./dhall-lang/tests/parser/success/escapedSingleQuotedString" , shouldParse "interpolated single quoted string"- "./tests/parser/success/interpolatedSingleQuotedString"+ "./dhall-lang/tests/parser/success/interpolatedSingleQuotedString" , shouldParse "double"- "./tests/parser/success/double"+ "./dhall-lang/tests/parser/success/double" , shouldParse "natural"- "./tests/parser/success/natural"+ "./dhall-lang/tests/parser/success/natural" , shouldParse "identifier"- "./tests/parser/success/identifier"+ "./dhall-lang/tests/parser/success/identifier" , shouldParse "paths"- "./tests/parser/success/paths"+ "./dhall-lang/tests/parser/success/paths" , shouldParse "path termination"- "./tests/parser/success/pathTermination"+ "./dhall-lang/tests/parser/success/pathTermination" , shouldParse "urls"- "./tests/parser/success/urls"+ "./dhall-lang/tests/parser/success/urls" , shouldParse "environmentVariables"- "./tests/parser/success/environmentVariables"+ "./dhall-lang/tests/parser/success/environmentVariables" , shouldParse "lambda"- "./tests/parser/success/lambda"+ "./dhall-lang/tests/parser/success/lambda" , shouldParse "if then else"- "./tests/parser/success/ifThenElse"+ "./dhall-lang/tests/parser/success/ifThenElse" , shouldParse "let"- "./tests/parser/success/let"+ "./dhall-lang/tests/parser/success/let" , shouldParse "forall"- "./tests/parser/success/forall"+ "./dhall-lang/tests/parser/success/forall" , shouldParse "function type"- "./tests/parser/success/functionType"+ "./dhall-lang/tests/parser/success/functionType" , shouldParse "operators"- "./tests/parser/success/operators"+ "./dhall-lang/tests/parser/success/operators" , shouldParse "annotations"- "./tests/parser/success/annotations"+ "./dhall-lang/tests/parser/success/annotations" , shouldParse "merge"- "./tests/parser/success/merge"- , shouldParse- "constructors"- "./tests/parser/success/constructors"+ "./dhall-lang/tests/parser/success/merge" , shouldParse "fields"- "./tests/parser/success/fields"+ "./dhall-lang/tests/parser/success/fields" , shouldParse "record"- "./tests/parser/success/record"+ "./dhall-lang/tests/parser/success/record" , shouldParse "union"- "./tests/parser/success/union"+ "./dhall-lang/tests/parser/success/union" , shouldParse "list"- "./tests/parser/success/list"+ "./dhall-lang/tests/parser/success/list" , shouldParse "builtins"- "./tests/parser/success/builtins"+ "./dhall-lang/tests/parser/success/builtins" , shouldParse "import alternatives"- "./tests/parser/success/importAlt"+ "./dhall-lang/tests/parser/success/importAlt" , shouldParse "large expression"- "./tests/parser/success/largeExpression"+ "./dhall-lang/tests/parser/success/largeExpression" , shouldParse "names that begin with reserved identifiers"- "./tests/parser/success/reservedPrefix"+ "./dhall-lang/tests/parser/success/reservedPrefix" , shouldParse "interpolated expressions with leading whitespace"- "./tests/parser/success/template"+ "./dhall-lang/tests/parser/success/template" , shouldParse "collections with type annotations containing imports"- "./tests/parser/success/collectionImportType"+ "./dhall-lang/tests/parser/success/collectionImportType" , shouldParse "a parenthesized custom header import"- "./tests/parser/success/parenthesizeUsing"+ "./dhall-lang/tests/parser/success/parenthesizeUsing" , shouldNotParse "accessing a field of an import without parentheses"- "./tests/parser/failure/importAccess.dhall"+ "./dhall-lang/tests/parser/failure/importAccess.dhall" , shouldParse "Sort"- "./tests/parser/success/sort"+ "./dhall-lang/tests/parser/success/sort" , shouldParse "quoted path components"- "./tests/parser/success/quotedPaths"+ "./dhall-lang/tests/parser/success/quotedPaths" , shouldNotParse "positive double out of bounds"- "./tests/parser/failure/doubleBoundsPos.dhall"+ "./dhall-lang/tests/parser/failure/doubleBoundsPos.dhall" , shouldNotParse "negative double out of bounds"- "./tests/parser/failure/doubleBoundsNeg.dhall"+ "./dhall-lang/tests/parser/failure/doubleBoundsNeg.dhall" , shouldParse "as Text"- "./tests/parser/success/asText"- , shouldParse- "custom headers"- "./tests/parser/success/customHeaders"+ "./dhall-lang/tests/parser/success/asText" , shouldNotParse "a multi-line literal without an initial newline"- "./tests/parser/failure/mandatoryNewline.dhall"+ "./dhall-lang/tests/parser/failure/mandatoryNewline.dhall"+ , shouldParse+ "a Unicode path component"+ "./dhall-lang/tests/parser/success/unicodePaths" ] shouldParse :: Text -> FilePath -> TestTree-shouldParse name path = Test.Tasty.HUnit.testCase (Data.Text.unpack name) (do- text <- Data.Text.IO.readFile (path <> "A.dhall")- case Dhall.Parser.exprFromText mempty text of- Left err -> Control.Exception.throwIO err- Right _ -> return () )+shouldParse name path = Test.Tasty.HUnit.testCase (Data.Text.unpack name) $ do+ text <- Data.Text.IO.readFile (path <> "A.dhall")+ encoded <- Data.ByteString.Lazy.readFile (path <> "B.dhallb")++ expression <- case Dhall.Parser.exprFromText mempty text of+ Left e -> Control.Exception.throwIO e+ Right a -> pure a++ let term = Dhall.Binary.encode expression+ bytes = Codec.Serialise.serialise term++ let message = "The expected CBOR representation doesn't match the actual one"+ Test.Tasty.HUnit.assertEqual message encoded bytes shouldNotParse :: Text -> FilePath -> TestTree shouldNotParse name path = Test.Tasty.HUnit.testCase (Data.Text.unpack name) (do
@@ -36,6 +36,7 @@ import qualified Codec.Serialise import qualified Data.Coerce+import qualified Data.List import qualified Dhall.Map import qualified Data.Sequence import qualified Dhall.Binary@@ -124,7 +125,8 @@ arbitrary = do n <- Test.QuickCheck.choose (0, 2) kvs <- Test.QuickCheck.vectorOf n ((,) <$> arbitrary <*> arbitrary)- return (Dhall.Map.fromList kvs)+ -- Sorting the fields here because serialization needs them in order+ return (Dhall.Map.fromList (Data.List.sortOn fst kvs)) shrink = map Dhall.Map.fromList@@ -237,7 +239,6 @@ , ( 1, lift2 CombineTypes) , ( 1, lift2 Prefer) , ( 1, lift3 Merge)- , ( 1, lift1 Constructors) , ( 1, lift2 Field) , ( 1, lift2 Project) , ( 7, lift1 Embed)@@ -334,10 +335,10 @@ binaryRoundtrip expression = wrap (fmap- Dhall.Binary.decodeWithVersion+ Dhall.Binary.decode (Codec.Serialise.deserialiseOrFail (Codec.Serialise.serialise- (Dhall.Binary.encodeWithVersion Dhall.Binary.defaultStandardVersion expression)+ (Dhall.Binary.encode expression) ) ) )
@@ -20,7 +20,6 @@ import qualified Test.Tasty import qualified Test.Tasty.HUnit -import Control.DeepSeq (($!!)) import Dhall.Import (Imported) import Dhall.Parser (Src) import Dhall.TypeCheck (TypeError, X)@@ -35,7 +34,6 @@ , issue151 , issue164 , issue201- , issue209 , issue216 , issue253 , parsing0@@ -130,15 +128,6 @@ issue201 = Test.Tasty.HUnit.testCase "Issue #201" (do -- Verify that type synonyms work _ <- Util.code "./tests/regression/issue201.dhall"- return () )--issue209 :: TestTree-issue209 = Test.Tasty.HUnit.testCase "Issue #209" (do- -- Verify that pretty-printing `constructors` doesn't trigger an infinite- -- loop- e <- Util.code "./tests/regression/issue209.dhall"- let text = Dhall.Core.pretty e- Just _ <- System.Timeout.timeout 1000000 (Control.Exception.evaluate $!! text) return () ) issue216 :: TestTree
@@ -96,8 +96,8 @@ should :: Text -> Text -> TestTree should name basename = Test.Tasty.HUnit.testCase (Data.Text.unpack name) $ do- let actualCode = "./tests/typecheck/" <> basename <> "A.dhall"- let expectedCode = "./tests/typecheck/" <> basename <> "B.dhall"+ let actualCode = "./dhall-lang/tests/typecheck/" <> basename <> "A.dhall"+ let expectedCode = "./dhall-lang/tests/typecheck/" <> basename <> "B.dhall" actualExpr <- case Dhall.Parser.exprFromText mempty actualCode of Left err -> Control.Exception.throwIO err@@ -116,7 +116,7 @@ shouldNotTypeCheck :: Text -> Text -> TestTree shouldNotTypeCheck name basename = Test.Tasty.HUnit.testCase (Data.Text.unpack name) $ do- let code = "./tests/typecheck/" <> basename <> ".dhall"+ let code = "./dhall-lang/tests/typecheck/" <> basename <> ".dhall" expression <- case Dhall.Parser.exprFromText mempty code of Left exception -> Control.Exception.throwIO exception
@@ -1,1 +0,0 @@-{ foo = 1, bar = True }
@@ -1,1 +0,0 @@-{ bar = True, foo = 1 }
@@ -1,1 +0,0 @@-42
@@ -1,1 +0,0 @@-env:UNSET1 as Text ? env:UNSET2 ? missing ? env:UNSET3
@@ -1,1 +0,0 @@-env:UNSET ? missing
@@ -1,1 +0,0 @@-missing
@@ -1,1 +0,0 @@-env:UNSET1 as Text ? env:UNSET2 ? missing ? env:UNSET3 ? 2
@@ -1,1 +0,0 @@-2
@@ -1,1 +0,0 @@-env:UNSET ? 3
@@ -1,1 +0,0 @@-3
@@ -1,1 +0,0 @@-4 ? missing
@@ -1,1 +0,0 @@-4
@@ -1,5 +0,0 @@-{ example0 =- ../data/fieldOrder/1.dhall sha256:261b3aca810973f81175d19b16226aaa5e76df7ea51c5d45e890dd6cdc49abbd-, example1 =- ../data/fieldOrder/2.dhall sha256:261b3aca810973f81175d19b16226aaa5e76df7ea51c5d45e890dd6cdc49abbd-}
@@ -1,1 +0,0 @@-{ example0 = { bar = True, foo = 1 }, example1 = { bar = True, foo = 1 } }
@@ -1,5 +0,0 @@- let T = < A : {} | B : {} >--in let t = constructors T--in t
@@ -1,1 +0,0 @@-./issue553A.dhall sha256:250873549ddd262f27f3b197b2a2631fb569e7bdfe12446fc0912b4a2359a83e
@@ -1,2 +0,0 @@--- This file assumes its base directory is actually ./data/foo/bar/-./a.dhall : Natural
@@ -0,0 +1,7 @@+ let replicate = https://prelude.dhall-lang.org/List/replicate++in let Config = { name : Text, age : Natural }++in let Configs = List Config++in replicate 10 Text "!"
@@ -0,0 +1,3 @@+let replicate = https://prelude.dhall-lang.org/List/replicate++in replicate 10 Text "!"
@@ -1,1 +0,0 @@-{ x = "foo" }.x
@@ -1,1 +0,0 @@-"foo"
@@ -1,1 +0,0 @@-< Foo : Text | Bar : Natural >.Foo
@@ -1,1 +0,0 @@-λ(Foo : Text) → < Foo = Foo | Bar : Natural >
@@ -1,1 +0,0 @@-{ foo : { bar : Text } } ⩓ { foo : { baz : Bool }, qux : Integer }
@@ -1,1 +0,0 @@-{ foo : { bar : Text, baz : Bool }, qux : Integer }
@@ -1,1 +0,0 @@-{ foo : { bar : Text } } //\\ { foo : { baz : Bool }, qux : Integer }
@@ -1,1 +0,0 @@-{ foo : { bar : Text, baz : Bool }, qux : Integer }
@@ -1,1 +0,0 @@-{ foo = 1, bar = "ABC" } // { baz = True }
@@ -1,1 +0,0 @@-{ bar = "ABC", baz = True, foo = 1 }
@@ -1,1 +0,0 @@-{ x = 1, y = True, z = "ABC" }.{ x, y }
@@ -1,1 +0,0 @@-{ x = 1, y = True }
@@ -1,9 +0,0 @@--- Verify that an implementation is processing escape sequences correctly--''-''${-'''-$-"-\-''
@@ -1,1 +0,0 @@-"\${\n''\n\$\n\"\n\\\n"
@@ -1,15 +0,0 @@-{- The indent is computed as the minimum number of leading spaces over all lines- in a multi-line literal, including the line right before the closing quotes.- In this case, there are three lines:-- * The first line containing " foo" with two leading spaces- * The second line containing " bar" with two leading spaces- * The third line containing " " with two leading spaces-- Therefore we strip two leading spaces from all three lines--}--''- foo- bar- ''
@@ -1,1 +0,0 @@-"foo\nbar\n"
@@ -1,7 +0,0 @@--- Non-trivial example that combines several multi-line literal features--λ(x : Text) → ''- ${x} baz- bar- foo- ''
@@ -1,1 +0,0 @@-λ(x : Text) → "${x} baz\n bar\n foo\n "
@@ -1,16 +0,0 @@-{- The indent is computed as the minimum number of leading spaces over all lines- in a multi-line literal, including the line right before the closing quotes.- In this case, there are three lines:-- * The first line containing " foo" with two leading spaces- * The second line containing " bar" with two leading spaces- * The third line containing "" with zero leading spaces-- Since the last line has zero leading spaces, the minimum number of leading- spaces over all three lines is zero, so we don't strip any spaces.--}--''- foo- bar-''
@@ -1,1 +0,0 @@-" foo\n bar\n"
@@ -1,9 +0,0 @@-{- This example verifies that an implementation is correctly breaking leading- spaces at interpolated expressions. The first line has the fewest number of- leading spaces (2) due to the interruption by the interpolated expression.--}--''-${Natural/show 1} foo- bar-''
@@ -1,1 +0,0 @@-"${Natural/show 1} foo\n bar\n"
@@ -1,8 +0,0 @@-{- A comment within the interior of a multi-line literal counts as part of the- literal--}--''--- Hello-{- world -}-''
@@ -1,1 +0,0 @@-"-- Hello\n{- world -}\n"
@@ -1,6 +0,0 @@-{- This is how you encode a multi-line literal that contains no newlines-- The leading newline is stripped--}-''-foo''
@@ -1,1 +0,0 @@-"foo"
@@ -1,7 +0,0 @@-{- Verify that an implementation is correctly preserving newlines in the- corresponding double-quoted literal--}--''-foo-bar''
@@ -1,1 +0,0 @@-"foo\nbar"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.and [ True, False, True ]
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.and ([] : List Bool)
@@ -1,1 +0,0 @@-True
@@ -1,2 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.build -(λ(bool : Type) → λ(true : bool) → λ(false : bool) → true)
@@ -1,1 +0,0 @@-True
@@ -1,2 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.build -(λ(bool : Type) → λ(true : bool) → λ(false : bool) → false)
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.even [ False, True, False ]
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.even [ False, True ]
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.even [ False ]
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.even ([] : List Bool)
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.fold True Natural 0 1
@@ -1,1 +0,0 @@-0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.fold False Natural 0 1
@@ -1,1 +0,0 @@-1
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.not True
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.not False
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.odd [ True, False, True ]
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.odd [ True, False ]
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.odd [ True ]
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.odd ([] : List Bool)
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.or [ True, False, True ]
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.or ([] : List Bool)
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.show True
@@ -1,1 +0,0 @@-"True"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Bool`.show False
@@ -1,1 +0,0 @@-"False"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Double`.show -3.1
@@ -1,1 +0,0 @@-"-3.1"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Double`.show 0.4
@@ -1,1 +0,0 @@-"0.4"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Integer`.show -3
@@ -1,1 +0,0 @@-"-3"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Integer`.show +0
@@ -1,1 +0,0 @@-"+0"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Integer`.toDouble -3
@@ -1,1 +0,0 @@--3.0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Integer`.toDouble +2
@@ -1,1 +0,0 @@-2.0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.all Natural Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.all Natural Natural/even ([] : List Natural)
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.any Natural Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.any Natural Natural/even ([] : List Natural)
@@ -1,1 +0,0 @@-False
@@ -1,7 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.build-Text-( λ(list : Type)-→ λ(cons : Text → list → list)-→ λ(nil : list)-→ cons "ABC" (cons "DEF" nil)-)
@@ -1,1 +0,0 @@-[ "ABC", "DEF" ]
@@ -1,7 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.build-Text-( λ(list : Type)-→ λ(cons : Text → list → list)-→ λ(nil : list)-→ nil-)
@@ -1,1 +0,0 @@-[] : List Text
@@ -1,5 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.concat Natural-[ [ 0, 1, 2 ]-, [ 3, 4 ]-, [ 5, 6, 7, 8 ]-]
@@ -1,1 +0,0 @@-[ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
@@ -1,5 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.concat Natural-[ [] : List Natural-, [] : List Natural-, [] : List Natural-]
@@ -1,1 +0,0 @@-[] : List Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.concatMap Natural Natural (λ(n : Natural) → [ n, n ]) [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-[ 2, 2, 3, 3, 5, 5 ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.concatMap Natural Natural (λ(n : Natural) → [ n, n ]) ([] : List Natural)
@@ -1,1 +0,0 @@-[] : List Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.filter Natural Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-[ 2 ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.filter Natural Natural/odd [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-[ 3, 5 ]
@@ -1,6 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.fold-Natural-[ 2, 3, 5 ]-Natural-(λ(x : Natural) → λ(y : Natural) → x + y)-0
@@ -1,1 +0,0 @@-10
@@ -1,7 +0,0 @@- λ(nil : Natural)-→ (../../../../../../Prelude/package.dhall).`List`.fold- Natural- [ 2, 3, 5 ]- Natural- (λ(x : Natural) → λ(y : Natural) → x + y)- nil
@@ -1,1 +0,0 @@-λ(nil : Natural) → 2 + (3 + (5 + nil))
@@ -1,4 +0,0 @@- λ(list : Type)-→ λ(cons : Natural → list → list)-→ λ(nil : list)-→ (../../../../../../Prelude/package.dhall).`List`.fold Natural [ 2, 3, 5 ] list cons nil
@@ -1,4 +0,0 @@- λ(list : Type)-→ λ(cons : Natural → list → list)-→ λ(nil : list)-→ cons 2 (cons 3 (cons 5 nil))
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.generate 5 Bool Natural/even
@@ -1,1 +0,0 @@-[ True, False, True, False, True ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.generate 0 Bool Natural/even
@@ -1,1 +0,0 @@-[] : List Bool
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.head Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Some 0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.head Natural ([] : List Natural)
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.indexed Bool [ True, False, True ]
@@ -1,4 +0,0 @@-[ { index = 0, value = True }-, { index = 1, value = False }-, { index = 2, value = True }-]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.indexed Bool ([] : List Bool)
@@ -1,1 +0,0 @@-[] : List { index : Natural, value : Bool }
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.iterate 10 Natural (λ(x : Natural) → x * 2) 1
@@ -1,1 +0,0 @@-[ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.iterate 0 Natural (λ(x : Natural) → x * 2) 1
@@ -1,1 +0,0 @@-[] : List Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.last Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Some 2
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.last Natural ([] : List Natural)
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.length Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-3
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.length Natural ([] : List Natural)
@@ -1,1 +0,0 @@-0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.map Natural Bool Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-[ True, False, False ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.map Natural Bool Natural/even ([] : List Natural)
@@ -1,1 +0,0 @@-[] : List Bool
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.null Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.null Natural ([] : List Natural)
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.replicate 9 Natural 1
@@ -1,1 +0,0 @@-[ 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.replicate 0 Natural 1
@@ -1,1 +0,0 @@-[] : List Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.reverse Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-[ 2, 1, 0 ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.reverse Natural ([] : List Natural)
@@ -1,1 +0,0 @@-[] : List Natural
@@ -1,15 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.shifted-Bool-[ [ { index = 0, value = True }- , { index = 1, value = True }- , { index = 2, value = False }- ]-, [ { index = 0, value = False }- , { index = 1, value = False }- ]-, [ { index = 0, value = True }- , { index = 1, value = True }- , { index = 2, value = True }- , { index = 3, value = True }- ]-]
@@ -1,10 +0,0 @@-[ { index = 0, value = True }-, { index = 1, value = True }-, { index = 2, value = False }-, { index = 3, value = False }-, { index = 4, value = False }-, { index = 5, value = True }-, { index = 6, value = True }-, { index = 7, value = True }-, { index = 8, value = True }-]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.shifted Bool ([] : List (List { index : Natural, value : Bool }))
@@ -1,1 +0,0 @@-[] : List { index : Natural, value : Bool }
@@ -1,7 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.unzip-Text-Bool-[ { _1 = "ABC", _2 = True }-, { _1 = "DEF", _2 = False }-, { _1 = "GHI", _2 = True }-]
@@ -1,1 +0,0 @@-{ _1 = [ "ABC", "DEF", "GHI" ], _2 = [ True, False, True ] }
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`List`.unzip Text Bool ([] : List { _1 : Text, _2 : Bool })
@@ -1,1 +0,0 @@-{ _1 = [] : List Text, _2 = [] : List Bool }
@@ -1,6 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.build-( λ(natural : Type)-→ λ(succ : natural → natural)-→ λ(zero : natural)-→ succ (succ (succ zero))-)
@@ -1,1 +0,0 @@-3
@@ -1,6 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.build-( λ(natural : Type)-→ λ(succ : natural → natural)-→ λ(zero : natural)-→ zero-)
@@ -1,1 +0,0 @@-0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.enumerate 10
@@ -1,1 +0,0 @@-[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.enumerate 0
@@ -1,1 +0,0 @@-[] : List Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.even 3
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.even 0
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.fold 3 Natural (λ(x : Natural) → 5 * x) 1
@@ -1,1 +0,0 @@-125
@@ -1,1 +0,0 @@-λ(zero : Natural) → (../../../../../../Prelude/package.dhall).`Natural`.fold 3 Natural (λ(x : Natural) → 5 * x) zero
@@ -1,1 +0,0 @@-λ(zero : Natural) → 5 * (5 * (5 * zero))
@@ -1,4 +0,0 @@- λ(natural : Type)-→ λ(succ : natural → natural)-→ λ(zero : natural)-→ (../../../../../../Prelude/package.dhall).`Natural`.fold 3 natural succ zero
@@ -1,1 +0,0 @@-λ(natural : Type) → λ(succ : natural → natural) → λ(zero : natural) → succ (succ (succ zero))
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.isZero 2
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.isZero 0
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.odd 3
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.odd 0
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.product [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-30
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.product ([] : List Natural)
@@ -1,1 +0,0 @@-1
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.show 3
@@ -1,1 +0,0 @@-"3"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.show 0
@@ -1,1 +0,0 @@-"0"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.sum [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-10
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.sum ([] : List Natural)
@@ -1,1 +0,0 @@-0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.toDouble 3
@@ -1,1 +0,0 @@-3.0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.toDouble 0
@@ -1,1 +0,0 @@-0.0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.toInteger 3
@@ -1,1 +0,0 @@-+3
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Natural`.toInteger 0
@@ -1,1 +0,0 @@-+0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.all Natural Natural/even (Some 3)
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.all Natural Natural/even (None Natural)
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.any Natural Natural/even (Some 2)
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.any Natural Natural/even (None Natural)
@@ -1,1 +0,0 @@-False
@@ -1,7 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.build-Natural-( λ(optional : Type)-→ λ(some : Natural → optional)-→ λ(none : optional)-→ some 1-)
@@ -1,1 +0,0 @@-Some 1
@@ -1,7 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.build-Natural-( λ(optional : Type)-→ λ(some : Natural → optional)-→ λ(none : optional)-→ none-)
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.concat Natural (Some (Some 1))
@@ -1,1 +0,0 @@-Some 1
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.concat Natural (Some (None Natural))
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.concat Natural (None (Optional Natural))
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.filter Natural Natural/even (Some 2)
@@ -1,1 +0,0 @@-Some 2
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.filter Natural Natural/odd (Some 2)
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.fold Natural (Some 2) Natural (λ(x : Natural) → x) 0
@@ -1,1 +0,0 @@-2
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.fold Natural (None Natural) Natural (λ(x : Natural) → x) 0
@@ -1,1 +0,0 @@-0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.head Natural [ None Natural, Some 1, Some 2 ]
@@ -1,1 +0,0 @@-Some 1
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.head Natural [ None Natural, None Natural ]
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.head Natural ([] : List (Optional Natural))
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.last Natural [ None Natural, Some 1, Some 2 ]
@@ -1,1 +0,0 @@-Some 2
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.last Natural [ None Natural, None Natural ]
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.last Natural ([] : List (Optional Natural))
@@ -1,1 +0,0 @@-None Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.length Natural (Some 2)
@@ -1,1 +0,0 @@-1
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.length Natural (None Natural)
@@ -1,1 +0,0 @@-0
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.map Natural Bool Natural/even (Some 3)
@@ -1,1 +0,0 @@-Some False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.map Natural Bool Natural/even (None Natural)
@@ -1,1 +0,0 @@-None Bool
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.null Natural (Some 2)
@@ -1,1 +0,0 @@-False
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.null Natural (None Natural)
@@ -1,1 +0,0 @@-True
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.toList Natural (Some 1)
@@ -1,1 +0,0 @@-[ 1 ] : List Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.toList Natural (None Natural)
@@ -1,1 +0,0 @@-[] : List Natural
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.unzip Text Bool (Some { _1 = "ABC", _2 = True })
@@ -1,1 +0,0 @@-{ _1 = Some "ABC", _2 = Some True }
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Optional`.unzip Text Bool (None { _1 : Text, _2 : Bool })
@@ -1,1 +0,0 @@-{ _1 = None Text, _2 = None Bool }
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concat [ "ABC", "DEF", "GHI" ]
@@ -1,1 +0,0 @@-"ABCDEFGHI"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concat ([] : List Text)
@@ -1,1 +0,0 @@-""
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concatMap Natural (λ(n : Natural) → "${Natural/show n} ") [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-"0 1 2 "
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concatMap Natural (λ(n : Natural) → "${Natural/show n} ") ([] : List Natural)
@@ -1,1 +0,0 @@-""
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concatMapSep ", " Natural Natural/show [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-"0, 1, 2"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concatMapSep ", " Natural Natural/show ([] : List Natural)
@@ -1,1 +0,0 @@-""
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concatSep ", " [ "ABC", "DEF", "GHI" ]
@@ -1,1 +0,0 @@-"ABC, DEF, GHI"
@@ -1,1 +0,0 @@-(../../../../../../Prelude/package.dhall).`Text`.concatSep ", " ([] : List Text)
@@ -1,1 +0,0 @@-""
@@ -1,52 +0,0 @@-let Text/concatMap = (../../../Prelude/package.dhall).`Text`.concatMap--let Text/concatSep = (../../../Prelude/package.dhall).`Text`.concatSep--let Row =- { cores :- Natural- , host :- Text- , key :- Text- , mandatoryFeatures :- List Text- , platforms :- List Text- , speedFactor :- Natural- , supportedFeatures :- List Text- , user :- Optional Text- }--let renderRow =- λ ( row- : Row- )- → let host =- Optional/fold- Text- row.user- Text- (λ(user : Text) → "${user}@${row.host}")- row.host- - let platforms = Text/concatSep "," row.platforms- - let key = row.key- - let cores = Integer/show (Natural/toInteger row.cores)- - let speedFactor = Integer/show (Natural/toInteger row.speedFactor)- - let supportedFeatures = Text/concatSep "," row.supportedFeatures- - let mandatoryFeatures = Text/concatSep "," row.mandatoryFeatures- - in ''- ${host} ${platforms} ${key} ${cores} ${speedFactor} ${supportedFeatures} ${mandatoryFeatures}- ''--in Text/concatMap Row renderRow
@@ -1,212 +0,0 @@- λ ( _- : List- { cores :- Natural- , host :- Text- , key :- Text- , mandatoryFeatures :- List Text- , platforms :- List Text- , speedFactor :- Natural- , supportedFeatures :- List Text- , user :- Optional Text- }- )-→ List/fold- { cores :- Natural- , host :- Text- , key :- Text- , mandatoryFeatures :- List Text- , platforms :- List Text- , speedFactor :- Natural- , supportedFeatures :- List Text- , user :- Optional Text- }- _- Text- ( λ ( _- : { cores :- Natural- , host :- Text- , key :- Text- , mandatoryFeatures :- List Text- , platforms :- List Text- , speedFactor :- Natural- , supportedFeatures :- List Text- , user :- Optional Text- }- )- → λ(_ : Text)- → ''- ${Optional/fold- Text- _@1.user- Text- (λ(user : Text) → "${user}@${_@1.host}")- _@1.host} ${merge- { Empty = λ(_ : {}) → "", NonEmpty = λ(_ : Text) → _ }- ( List/fold- Text- _@1.platforms- < Empty : {} | NonEmpty : Text >- ( λ(_ : Text)- → λ(_ : < Empty : {} | NonEmpty : Text >)- → merge- { Empty =- λ(_ : {}) → < NonEmpty = _@2 | Empty : {} >- , NonEmpty =- λ(_ : Text)- → < NonEmpty = _@2 ++ "," ++ _ | Empty : {} >- }- _- : < Empty : {} | NonEmpty : Text >- )- < Empty = {=} | NonEmpty : Text >- )- : Text} ${_@1.key} ${Integer/show- ( Natural/toInteger _@1.cores- )} ${Integer/show- ( Natural/toInteger- _@1.speedFactor- )} ${merge- { Empty =- λ(_ : {}) → ""- , NonEmpty =- λ(_ : Text) → _- }- ( List/fold- Text- _@1.supportedFeatures- < Empty :- {}- | NonEmpty :- Text- >- ( λ(_ : Text)- → λ ( _- : < Empty :- {}- | NonEmpty :- Text- >- )- → merge- { Empty =- λ(_ : {})- → < NonEmpty =- _@2- | Empty :- {}- >- , NonEmpty =- λ(_ : Text)- → < NonEmpty =- _@2- ++ ","- ++ _- | Empty :- {}- >- }- _- : < Empty :- {}- | NonEmpty :- Text- >- )- < Empty =- {=}- | NonEmpty :- Text- >- )- : Text} ${merge- { Empty =- λ(_ : {})- → ""- , NonEmpty =- λ ( _- : Text- )- → _- }- ( List/fold- Text- _@1.mandatoryFeatures- < Empty :- {}- | NonEmpty :- Text- >- ( λ ( _- : Text- )- → λ ( _- : < Empty :- {}- | NonEmpty :- Text- >- )- → merge- { Empty =- λ ( _- : {}- )- → < NonEmpty =- _@2- | Empty :- {}- >- , NonEmpty =- λ ( _- : Text- )- → < NonEmpty =- _@2- ++ ","- ++ _- | Empty :- {}- >- }- _- : < Empty :- {}- | NonEmpty :- Text- >- )- < Empty =- {=}- | NonEmpty :- Text- >- )- : Text}- ''- ++ _- )- ""
@@ -1,1 +0,0 @@-{ example0 = Double/show -0.42, example1 = Double/show 13.37 }
@@ -1,1 +0,0 @@-{ example0 = "-0.42", example1 = "13.37" }
@@ -1,4 +0,0 @@-{ example0 = Integer/show +1337-, example1 = Integer/show -42-, example2 = Integer/show +0-}
@@ -1,1 +0,0 @@-{ example0 = "+1337", example1 = "-42", example2 = "+0" }
@@ -1,10 +0,0 @@-[ Integer/toDouble +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792-, Integer/toDouble +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791-, Integer/toDouble +179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218945-, Integer/toDouble +179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218944--, Integer/toDouble -179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792-, Integer/toDouble -179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791-, Integer/toDouble -179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218945-, Integer/toDouble -179769313486231560835325876058105298516207002341652166261661174625869553267292326574530099287946549246750631490335877017522087105926987962906277604735569213290190919152394180476217125334960946356387261286640198029037799514183602981511756283727771403830521483963923935633133642802139091669457927874464075218944-]
@@ -1,9 +0,0 @@-[ Infinity-, 1.7976931348623157e308-, 1.7976931348623157e308-, 1.7976931348623155e308-, -Infinity-, -1.7976931348623157e308-, -1.7976931348623157e308-, -1.7976931348623155e308-]
@@ -1,3 +0,0 @@-let l = λ(n : Natural) → λ(m : Natural) → λ(x : Natural) → n + m * x-let f = l 2 3-in f 445
@@ -1,1 +0,0 @@-1337
@@ -1,22 +0,0 @@-{ example0 =- List/build- Bool- ( λ(list : Type)- → λ(cons : Bool → list → list)- → λ(nil : list)- → cons True (cons False nil)- )-, example1 =- List/build- Bool- (λ(x : Type) → λ(x : Bool → x → x) → λ(x : x@1) → x@1 True (x@1 False x))-, example2 =- λ(id : ∀(a : Type) → a → a)- → List/build- Bool- ( λ(list : Type)- → λ(cons : Bool → list → list)- → λ(nil : list)- → id list (cons True (cons False nil))- )-}
@@ -1,7 +0,0 @@-{ example0 =- [ True, False ] : List Bool-, example1 =- [ True, False ] : List Bool-, example2 =- λ(id : ∀(a : Type) → a → a) → id (List Bool) [ True, False ]-}
@@ -1,4 +0,0 @@-''- foo-bar-''
@@ -1,4 +0,0 @@-''- foo-bar-''
@@ -1,18 +0,0 @@-{ example0 =- Natural/build- ( λ(natural : Type)- → λ(succ : natural → natural)- → λ(zero : natural)- → succ zero- )-, example1 =- Natural/build (λ(x : Type) → λ(x : x → x) → λ(x : x@1) → x@1 x)-, example2 =- λ(id : ∀(a : Type) → a → a)- → Natural/build- ( λ(natural : Type)- → λ(succ : natural → natural)- → λ(zero : natural)- → id natural (succ zero)- )-}
@@ -1,7 +0,0 @@-{ example0 =- 1-, example1 =- 1-, example2 =- λ(id : ∀(a : Type) → a → a) → id Natural 1-}
@@ -1,1 +0,0 @@-1 + 2
@@ -1,1 +0,0 @@-3
@@ -1,1 +0,0 @@-Natural/show 42
@@ -1,1 +0,0 @@-"42"
@@ -1,1 +0,0 @@-Natural/toInteger 1
@@ -1,1 +0,0 @@-+1
@@ -1,32 +0,0 @@-{ example0 =- Optional/build- Natural- ( λ(optional : Type)- → λ(just : Natural → optional)- → λ(nothing : optional)- → just 1- )-, example1 =- Optional/build- Integer- (λ(optional : Type) → λ(x : Integer → optional) → λ(x : optional) → x@1 +1)-, example2 =- λ(id : ∀(a : Type) → a → a)- → Optional/build- Bool- ( λ(optional : Type)- → λ(just : Bool → optional)- → λ(nothing : optional)- → id optional (just True)- )-, example3 =- λ(a : Type)- → λ(x : a)- → Optional/build- a- ( λ(optional : Type)- → λ(just : a → optional)- → λ(nothing : optional)- → just x- )-}
@@ -1,9 +0,0 @@-{ example0 =- [ 1 ] : Optional Natural-, example1 =- [ +1 ] : Optional Integer-, example2 =- λ(id : ∀(a : Type) → a → a) → id (Optional Bool) ([ True ] : Optional Bool)-, example3 =- λ(a : Type) → λ(x : a) → [ x ] : Optional a-}
@@ -1,1 +0,0 @@-Optional/build Text (Optional/fold Text ([ "foo" ] : Optional Text))
@@ -1,1 +0,0 @@-[ "foo" ] : Optional Text
@@ -1,7 +0,0 @@- let f =- λ(o : Optional Text)- → Optional/fold Text o Natural (λ(j : Text) → 1) 2--in { example0 = f ([ "foo" ] : Optional Text)- , example1 = f ([] : Optional Text)- }
@@ -1,1 +0,0 @@-{ example0 = 1, example1 = 2 }
@@ -1,1 +0,0 @@-{ b = 2 } // { a = 1 }
@@ -1,1 +0,0 @@-{ a = 1, b = 2 }
@@ -1,6 +0,0 @@-{ example0 = λ(x : Bool) → x && True-, example1 = λ(x : Bool) → True && x-, example2 = λ(x : Bool) → x && False-, example3 = λ(x : Bool) → False && x-, example4 = λ(x : Bool) → x && x-}
@@ -1,6 +0,0 @@-{ example0 = λ(x : Bool) → x-, example1 = λ(x : Bool) → x-, example2 = λ(x : Bool) → False-, example3 = λ(x : Bool) → False-, example4 = λ(x : Bool) → x-}
@@ -1,4 +0,0 @@-{ example0 = λ(x : Bool) → x == True-, example1 = λ(x : Bool) → True == x-, example2 = λ(x : Bool) → x == x-}
@@ -1,4 +0,0 @@-{ example0 = λ(x : Bool) → x-, example1 = λ(x : Bool) → x-, example2 = λ(x : Bool) → True-}
@@ -1,3 +0,0 @@-{ example0 = λ(x : Bool) → if x then True else False-, example1 = λ(x : Bool) → λ(y : Text) → if x then y else y-}
@@ -1,3 +0,0 @@-{ example0 = λ(x : Bool) → x-, example1 = λ(x : Bool) → λ(y : Text) → y-}
@@ -1,4 +0,0 @@-{ example0 = λ(x : Bool) → x != False-, example1 = λ(x : Bool) → False != x-, example2 = λ(x : Bool) → x != x-}
@@ -1,4 +0,0 @@-{ example0 = λ(x : Bool) → x-, example1 = λ(x : Bool) → x-, example2 = λ(x : Bool) → False-}
@@ -1,6 +0,0 @@-{ example0 = λ(x : Bool) → x || True-, example1 = λ(x : Bool) → True || x-, example2 = λ(x : Bool) → x || False-, example3 = λ(x : Bool) → False || x-, example4 = λ(x : Bool) → x || x-}
@@ -1,6 +0,0 @@-{ example0 = λ(x : Bool) → True-, example1 = λ(x : Bool) → True-, example2 = λ(x : Bool) → x-, example3 = λ(x : Bool) → x-, example4 = λ(x : Bool) → x-}
@@ -1,1 +0,0 @@--179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0
@@ -1,1 +0,0 @@-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0
@@ -1,1 +0,0 @@-./testImport .hello
@@ -1,2 +0,0 @@--- Multi-line literals require a mandatory newline after the opening quotes-''ABC''
@@ -1,4 +0,0 @@-{ foo = ([] : List Integer) # [1, 2, 3] # ([1, 2, 3] : List Integer)-, bar = [] : Optional Integer-, baz = [1] : Optional Integer-} : { foo : List Integer, bar : Optional Integer, baz : Optional Integer }
@@ -1,84 +0,0 @@-[- 26,- [- 8,- {- "foo": [- 3,- 7,- [- 3,- 7,- [- 4,- "Integer"- ],- [- 4,- null,- [- 15,- 1- ],- [- 15,- 2- ],- [- 15,- 3- ]- ]- ],- [- 4,- null,- [- 15,- 1- ],- [- 15,- 2- ],- [- 15,- 3- ]- ]- ],- "bar": [- 5,- "Integer"- ],- "baz": [- 5,- "Integer",- [- 15,- 1- ]- ]- }- ],- [- 7,- {- "foo": [- 0,- "List",- "Integer"- ],- "bar": [- 0,- "Optional",- "Integer"- ],- "baz": [- 0,- "Optional",- "Integer"- ]- }- ]-]
@@ -1,1 +0,0 @@-https://example.com/foo as Text
@@ -1,11 +0,0 @@-[- 24,- null,- 1,- null,- 1,- "example.com",- "foo",- null,- null-]
@@ -1,3 +0,0 @@-{- foo -}--1
@@ -1,4 +0,0 @@-[- 15,- 1-]
@@ -1,31 +0,0 @@- λ ( x- : { field0 : Bool- , field1 : Optional (Optional Bool)- , field2 : Natural- , field3 : Integer- , field4 : Double- , field5 : Text- , field6 : List (List Bool)- }- )-→ { field00 = Natural/fold- , field01 = Natural/build- , field02 = Natural/isZero- , field03 = Natural/even- , field04 = Natural/odd- , field05 = Natural/toInteger- , field06 = Natural/show- , field07 = Integer/show- , field08 = Double/show- , field09 = List/build- , field10 = List/fold- , field11 = List/length- , field12 = List/head- , field13 = List/last- , field14 = List/indexed- , field15 = List/reverse- , field16 = Optional/fold- , field17 = Optional/build- , field18 = True- , field19 = False- }
@@ -1,57 +0,0 @@-[- 1,- "x",- [- 7,- {- "field0": "Bool",- "field1": [- 0,- "Optional",- [- 0,- "Optional",- "Bool"- ]- ],- "field2": "Natural",- "field3": "Integer",- "field4": "Double",- "field5": "Text",- "field6": [- 0,- "List",- [- 0,- "List",- "Bool"- ]- ]- }- ],- [- 8,- {- "field00": "Natural/fold",- "field01": "Natural/build",- "field02": "Natural/isZero",- "field03": "Natural/even",- "field04": "Natural/odd",- "field05": "Natural/toInteger",- "field06": "Natural/show",- "field07": "Integer/show",- "field08": "Double/show",- "field09": "List/build",- "field10": "List/fold",- "field11": "List/length",- "field12": "List/head",- "field13": "List/last",- "field14": "List/indexed",- "field15": "List/reverse",- "field16": "Optional/fold",- "field17": "Optional/build",- "field18": true,- "field19": false- }- ]-]
@@ -1,3 +0,0 @@-{ example0 = [] : Optional ./type.dhall-, example1 = [] : List ./type.dhall-}
@@ -1,25 +0,0 @@-[- 8,- {- "example0": [- 5,- [- 24,- null,- 0,- 3,- "type.dhall"- ]- ],- "example1": [- 4,- [- 24,- null,- 0,- 3,- "type.dhall"- ]- ]- }-]
@@ -1,1 +0,0 @@-constructors < Left : Natural | Right : Bool >
@@ -1,10 +0,0 @@-[- 13,- [- 11,- {- "Left": "Natural",- "Right": "Bool"- }- ]-]
@@ -1,1 +0,0 @@-https://example.com/foo using ./headers.dhall
@@ -1,17 +0,0 @@-[- 24,- null,- 0,- [- 24,- null,- 0,- 3,- "headers.dhall"- ],- 1,- "example.com",- "foo",- null,- null-]
@@ -1,1 +0,0 @@-[ 1.1, -1.1, 1e1, 1.1e1, -1.1 ]
@@ -1,9 +0,0 @@-[- 4,- null,- 1.1,- -1.1,- 10,- 11,- -1.1-]
@@ -1,1 +0,0 @@-"ABC"
@@ -1,4 +0,0 @@-[- 18,- "ABC"-]
@@ -1,5 +0,0 @@-[ env:FOO-- -- Yes, this is legal-, env:"\"\\\a\b\f\n\r\t\v"-]
@@ -1,18 +0,0 @@-[- 4,- null,- [- 24,- null,- 0,- 6,- "FOO"- ],- [- 24,- null,- 0,- 6,- "\\\"\\\\\\a\\b\\f\\n\\r\\t\\v"- ]-]
@@ -1,1 +0,0 @@-"\\\"\$\\\/\b\f\n\r\t \u2200(a : Type) \u2192 a"
@@ -1,4 +0,0 @@-[- 18,- "\\\"$\\/\b\f\n\r\t ∀(a : Type) → a"-]
@@ -1,4 +0,0 @@-''-''${-'''-''
@@ -1,4 +0,0 @@-[- 18,- "${\n''\n"-]
@@ -1,1 +0,0 @@-({ foo = { bar = { baz = 1 } } }).foo. bar .baz
@@ -1,31 +0,0 @@-[- 9,- [- 9,- [- 9,- [- 8,- {- "foo": [- 8,- {- "bar": [- 8,- {- "baz": [- 15,- 1- ]- }- ]- }- ]- }- ],- "foo"- ],- "bar"- ],- "baz"-]
@@ -1,1 +0,0 @@-∀(a : Type) → forall (b : Type) -> a
@@ -1,11 +0,0 @@-[- 2,- "a",- "Type",- [- 2,- "b",- "Type",- "a"- ]-]
@@ -1,1 +0,0 @@-Bool → Bool -> Bool
@@ -1,9 +0,0 @@-[- 2,- "Bool",- [- 2,- "Bool",- "Bool"- ]-]
@@ -1,1 +0,0 @@-λ(a : Type) → λ(a : Type) → a@1
@@ -1,14 +0,0 @@-[- 1,- "a",- "Type",- [- 1,- "a",- "Type",- [- "a",- 1- ]- ]-]
@@ -1,1 +0,0 @@-if True then 1 else 2
@@ -1,12 +0,0 @@-[- 14,- true,- [- 15,- 1- ],- [- 15,- 2- ]-]
@@ -1,1 +0,0 @@-env:UNSET1 as Text ? env:UNSET2 ? missing ? env:UNSET3 ? 2
@@ -1,47 +0,0 @@-[- 3,- 11,- [- 3,- 11,- [- 3,- 11,- [- 3,- 11,- [- 24,- null,- 1,- 6,- "UNSET1"- ],- [- 24,- null,- 0,- 6,- "UNSET2"- ]- ],- [- 24,- null,- 0,- 7- ]- ],- [- 24,- null,- 0,- 6,- "UNSET3"- ]- ],- [- 15,- 2- ]-]
@@ -1,1 +0,0 @@-"ABC${Integer/show 123}"
@@ -1,13 +0,0 @@-[- 18,- "ABC",- [- 0,- "Integer/show",- [- 15,- 123- ]- ],- ""-]
@@ -1,4 +0,0 @@-''-ABC-${Integer/show 123}-''
@@ -1,13 +0,0 @@-[- 18,- "ABC\n",- [- 0,- "Integer/show",- [- 15,- 123- ]- ],- "\n"-]
@@ -1,2 +0,0 @@-let _ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/ = 1-in _ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/
@@ -1,10 +0,0 @@-[- 25,- "_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/",- null,- [- 15,- 1- ],- "_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/"-]
@@ -1,1 +0,0 @@-λ(a : Type) → \(b : Type) -> a
@@ -1,11 +0,0 @@-[- 1,- "a",- "Type",- [- 1,- "b",- "Type",- "a"- ]-]
@@ -1,254 +0,0 @@- λ ( xs- : List- { cores : Natural- , host : Text- , key : Text- , mandatoryFeatures : List Text- , platforms :- List- < AArch64_Linux : {}- | ARMv5tel_Linux : {}- | ARMv7l_Linux : {}- | I686_Cygwin : {}- | I686_Linux : {}- | MIPS64el_Linux : {}- | PowerPC_Linux : {}- | X86_64_Cygwin : {}- | X86_64_Darwin : {}- | X86_64_FreeBSD : {}- | X86_64_Linux : {}- | X86_64_Solaris : {}- >- , speedFactor : Natural- , supportedFeatures : List Text- , user : Optional Text- }- )-→ List/fold- { cores : Natural- , host : Text- , key : Text- , mandatoryFeatures : List Text- , platforms :- List- < AArch64_Linux : {}- | ARMv5tel_Linux : {}- | ARMv7l_Linux : {}- | I686_Cygwin : {}- | I686_Linux : {}- | MIPS64el_Linux : {}- | PowerPC_Linux : {}- | X86_64_Cygwin : {}- | X86_64_Darwin : {}- | X86_64_FreeBSD : {}- | X86_64_Linux : {}- | X86_64_Solaris : {}- >- , speedFactor : Natural- , supportedFeatures : List Text- , user : Optional Text- }- xs- Text- ( λ ( x- : { cores : Natural- , host : Text- , key : Text- , mandatoryFeatures : List Text- , platforms :- List- < AArch64_Linux : {}- | ARMv5tel_Linux : {}- | ARMv7l_Linux : {}- | I686_Cygwin : {}- | I686_Linux : {}- | MIPS64el_Linux : {}- | PowerPC_Linux : {}- | X86_64_Cygwin : {}- | X86_64_Darwin : {}- | X86_64_FreeBSD : {}- | X86_64_Linux : {}- | X86_64_Solaris : {}- >- , speedFactor : Natural- , supportedFeatures : List Text- , user : Optional Text- }- )- → λ(y : Text)- → ( Optional/fold- Text- x.user- Text- (λ(user : Text) → user ++ "@" ++ x.host ++ "")- x.host- ++ " "- ++ ( merge- { Empty = λ(_ : {}) → ""- , NonEmpty = λ(result : Text) → result- }- ( List/fold- < AArch64_Linux : {}- | ARMv5tel_Linux : {}- | ARMv7l_Linux : {}- | I686_Cygwin : {}- | I686_Linux : {}- | MIPS64el_Linux : {}- | PowerPC_Linux : {}- | X86_64_Cygwin : {}- | X86_64_Darwin : {}- | X86_64_FreeBSD : {}- | X86_64_Linux : {}- | X86_64_Solaris : {}- >- x.platforms- < Empty : {} | NonEmpty : Text >- ( λ ( element- : < AArch64_Linux : {}- | ARMv5tel_Linux : {}- | ARMv7l_Linux : {}- | I686_Cygwin : {}- | I686_Linux : {}- | MIPS64el_Linux : {}- | PowerPC_Linux : {}- | X86_64_Cygwin : {}- | X86_64_Darwin : {}- | X86_64_FreeBSD : {}- | X86_64_Linux : {}- | X86_64_Solaris : {}- >- )- → λ(status : < Empty : {} | NonEmpty : Text >)- → merge- { Empty =- λ(_ : {})- → < NonEmpty =- merge- { AArch64_Linux = λ(_ : {}) → "aarch64-linux"- , ARMv5tel_Linux =- λ(_ : {}) → "armv5tel-linux"- , ARMv7l_Linux = λ(_ : {}) → "armv7l-linux"- , I686_Cygwin = λ(_ : {}) → "i686-cygwin"- , I686_Linux = λ(_ : {}) → "i686-linux"- , MIPS64el_Linux =- λ(_ : {}) → "mips64el-linux"- , PowerPC_Linux = λ(_ : {}) → "powerpc-linux"- , X86_64_Cygwin = λ(_ : {}) → "x86_64-cygwin"- , X86_64_Darwin = λ(_ : {}) → "x86_64-darwin"- , X86_64_FreeBSD =- λ(_ : {}) → "x86_64-freebsd"- , X86_64_Linux = λ(_ : {}) → "x86_64-linux"- , X86_64_Solaris =- λ(_ : {}) → "x86_64-solaris"- }- element- | Empty : {}- >- , NonEmpty =- λ(result : Text)- → < NonEmpty =- ( merge- { AArch64_Linux =- λ(_ : {}) → "aarch64-linux"- , ARMv5tel_Linux =- λ(_ : {}) → "armv5tel-linux"- , ARMv7l_Linux =- λ(_ : {}) → "armv7l-linux"- , I686_Cygwin =- λ(_ : {}) → "i686-cygwin"- , I686_Linux =- λ(_ : {}) → "i686-linux"- , MIPS64el_Linux =- λ(_ : {}) → "mips64el-linux"- , PowerPC_Linux =- λ(_ : {}) → "powerpc-linux"- , X86_64_Cygwin =- λ(_ : {}) → "x86_64-cygwin"- , X86_64_Darwin =- λ(_ : {}) → "x86_64-darwin"- , X86_64_FreeBSD =- λ(_ : {}) → "x86_64-freebsd"- , X86_64_Linux =- λ(_ : {}) → "x86_64-linux"- , X86_64_Solaris =- λ(_ : {}) → "x86_64-solaris"- }- element- )- ++ ","- ++ result- | Empty : {}- >- }- status- : < Empty : {} | NonEmpty : Text >- )- < Empty = {=} | NonEmpty : Text >- )- : Text- )- ++ " "- ++ x.key- ++ " "- ++ Integer/show (Natural/toInteger x.cores)- ++ " "- ++ Integer/show (Natural/toInteger x.speedFactor)- ++ " "- ++ ( merge- { Empty = λ(_ : {}) → ""- , NonEmpty = λ(result : Text) → result- }- ( List/fold- Text- x.supportedFeatures- < Empty : {} | NonEmpty : Text >- ( λ(element : Text)- → λ(status : < Empty : {} | NonEmpty : Text >)- → merge- { Empty =- λ(_ : {}) → < NonEmpty = element | Empty : {} >- , NonEmpty =- λ(result : Text)- → < NonEmpty = element ++ "," ++ result- | Empty : {}- >- }- status- : < Empty : {} | NonEmpty : Text >- )- < Empty = {=} | NonEmpty : Text >- )- : Text- )- ++ " "- ++ ( merge- { Empty = λ(_ : {}) → ""- , NonEmpty = λ(result : Text) → result- }- ( List/fold- Text- x.mandatoryFeatures- < Empty : {} | NonEmpty : Text >- ( λ(element : Text)- → λ(status : < Empty : {} | NonEmpty : Text >)- → merge- { Empty =- λ(_ : {}) → < NonEmpty = element | Empty : {} >- , NonEmpty =- λ(result : Text)- → < NonEmpty = element ++ "," ++ result- | Empty : {}- >- }- status- : < Empty : {} | NonEmpty : Text >- )- < Empty = {=} | NonEmpty : Text >- )- : Text- )- ++ "\n"- )- ++ y- )- ""
@@ -1,1303 +0,0 @@-[- 1,- "xs",- [- 0,- "List",- [- 7,- {- "cores": "Natural",- "host": "Text",- "key": "Text",- "mandatoryFeatures": [- 0,- "List",- "Text"- ],- "platforms": [- 0,- "List",- [- 11,- {- "AArch64_Linux": [- 7,- {}- ],- "ARMv5tel_Linux": [- 7,- {}- ],- "ARMv7l_Linux": [- 7,- {}- ],- "I686_Cygwin": [- 7,- {}- ],- "I686_Linux": [- 7,- {}- ],- "MIPS64el_Linux": [- 7,- {}- ],- "PowerPC_Linux": [- 7,- {}- ],- "X86_64_Cygwin": [- 7,- {}- ],- "X86_64_Darwin": [- 7,- {}- ],- "X86_64_FreeBSD": [- 7,- {}- ],- "X86_64_Linux": [- 7,- {}- ],- "X86_64_Solaris": [- 7,- {}- ]- }- ]- ],- "speedFactor": "Natural",- "supportedFeatures": [- 0,- "List",- "Text"- ],- "user": [- 0,- "Optional",- "Text"- ]- }- ]- ],- [- 0,- [- 0,- [- 0,- [- 0,- [- 0,- "List/fold",- [- 7,- {- "cores": "Natural",- "host": "Text",- "key": "Text",- "mandatoryFeatures": [- 0,- "List",- "Text"- ],- "platforms": [- 0,- "List",- [- 11,- {- "AArch64_Linux": [- 7,- {}- ],- "ARMv5tel_Linux": [- 7,- {}- ],- "ARMv7l_Linux": [- 7,- {}- ],- "I686_Cygwin": [- 7,- {}- ],- "I686_Linux": [- 7,- {}- ],- "MIPS64el_Linux": [- 7,- {}- ],- "PowerPC_Linux": [- 7,- {}- ],- "X86_64_Cygwin": [- 7,- {}- ],- "X86_64_Darwin": [- 7,- {}- ],- "X86_64_FreeBSD": [- 7,- {}- ],- "X86_64_Linux": [- 7,- {}- ],- "X86_64_Solaris": [- 7,- {}- ]- }- ]- ],- "speedFactor": "Natural",- "supportedFeatures": [- 0,- "List",- "Text"- ],- "user": [- 0,- "Optional",- "Text"- ]- }- ]- ],- "xs"- ],- "Text"- ],- [- 1,- "x",- [- 7,- {- "cores": "Natural",- "host": "Text",- "key": "Text",- "mandatoryFeatures": [- 0,- "List",- "Text"- ],- "platforms": [- 0,- "List",- [- 11,- {- "AArch64_Linux": [- 7,- {}- ],- "ARMv5tel_Linux": [- 7,- {}- ],- "ARMv7l_Linux": [- 7,- {}- ],- "I686_Cygwin": [- 7,- {}- ],- "I686_Linux": [- 7,- {}- ],- "MIPS64el_Linux": [- 7,- {}- ],- "PowerPC_Linux": [- 7,- {}- ],- "X86_64_Cygwin": [- 7,- {}- ],- "X86_64_Darwin": [- 7,- {}- ],- "X86_64_FreeBSD": [- 7,- {}- ],- "X86_64_Linux": [- 7,- {}- ],- "X86_64_Solaris": [- 7,- {}- ]- }- ]- ],- "speedFactor": "Natural",- "supportedFeatures": [- 0,- "List",- "Text"- ],- "user": [- 0,- "Optional",- "Text"- ]- }- ],- [- 1,- "y",- "Text",- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- [- 0,- [- 0,- [- 0,- [- 0,- [- 0,- "Optional/fold",- "Text"- ],- [- 9,- "x",- "user"- ]- ],- "Text"- ],- [- 1,- "user",- "Text",- [- 3,- 6,- [- 3,- 6,- [- 3,- 6,- "user",- [- 18,- "@"- ]- ],- [- 9,- "x",- "host"- ]- ],- [- 18,- ""- ]- ]- ]- ],- [- 9,- "x",- "host"- ]- ],- [- 18,- " "- ]- ],- [- 6,- [- 8,- {- "Empty": [- 1,- [- 7,- {}- ],- [- 18,- ""- ]- ],- "NonEmpty": [- 1,- "result",- "Text",- "result"- ]- }- ],- [- 0,- [- 0,- [- 0,- [- 0,- [- 0,- "List/fold",- [- 11,- {- "AArch64_Linux": [- 7,- {}- ],- "ARMv5tel_Linux": [- 7,- {}- ],- "ARMv7l_Linux": [- 7,- {}- ],- "I686_Cygwin": [- 7,- {}- ],- "I686_Linux": [- 7,- {}- ],- "MIPS64el_Linux": [- 7,- {}- ],- "PowerPC_Linux": [- 7,- {}- ],- "X86_64_Cygwin": [- 7,- {}- ],- "X86_64_Darwin": [- 7,- {}- ],- "X86_64_FreeBSD": [- 7,- {}- ],- "X86_64_Linux": [- 7,- {}- ],- "X86_64_Solaris": [- 7,- {}- ]- }- ]- ],- [- 9,- "x",- "platforms"- ]- ],- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ]- ],- [- 1,- "element",- [- 11,- {- "AArch64_Linux": [- 7,- {}- ],- "ARMv5tel_Linux": [- 7,- {}- ],- "ARMv7l_Linux": [- 7,- {}- ],- "I686_Cygwin": [- 7,- {}- ],- "I686_Linux": [- 7,- {}- ],- "MIPS64el_Linux": [- 7,- {}- ],- "PowerPC_Linux": [- 7,- {}- ],- "X86_64_Cygwin": [- 7,- {}- ],- "X86_64_Darwin": [- 7,- {}- ],- "X86_64_FreeBSD": [- 7,- {}- ],- "X86_64_Linux": [- 7,- {}- ],- "X86_64_Solaris": [- 7,- {}- ]- }- ],- [- 1,- "status",- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ],- [- 6,- [- 8,- {- "Empty": [- 1,- [- 7,- {}- ],- [- 12,- "NonEmpty",- [- 6,- [- 8,- {- "AArch64_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "aarch64-linux"- ]- ],- "ARMv5tel_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "armv5tel-linux"- ]- ],- "ARMv7l_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "armv7l-linux"- ]- ],- "I686_Cygwin": [- 1,- [- 7,- {}- ],- [- 18,- "i686-cygwin"- ]- ],- "I686_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "i686-linux"- ]- ],- "MIPS64el_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "mips64el-linux"- ]- ],- "PowerPC_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "powerpc-linux"- ]- ],- "X86_64_Cygwin": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-cygwin"- ]- ],- "X86_64_Darwin": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-darwin"- ]- ],- "X86_64_FreeBSD": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-freebsd"- ]- ],- "X86_64_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-linux"- ]- ],- "X86_64_Solaris": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-solaris"- ]- ]- }- ],- "element"- ],- {- "Empty": [- 7,- {}- ]- }- ]- ],- "NonEmpty": [- 1,- "result",- "Text",- [- 12,- "NonEmpty",- [- 3,- 6,- [- 3,- 6,- [- 6,- [- 8,- {- "AArch64_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "aarch64-linux"- ]- ],- "ARMv5tel_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "armv5tel-linux"- ]- ],- "ARMv7l_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "armv7l-linux"- ]- ],- "I686_Cygwin": [- 1,- [- 7,- {}- ],- [- 18,- "i686-cygwin"- ]- ],- "I686_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "i686-linux"- ]- ],- "MIPS64el_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "mips64el-linux"- ]- ],- "PowerPC_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "powerpc-linux"- ]- ],- "X86_64_Cygwin": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-cygwin"- ]- ],- "X86_64_Darwin": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-darwin"- ]- ],- "X86_64_FreeBSD": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-freebsd"- ]- ],- "X86_64_Linux": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-linux"- ]- ],- "X86_64_Solaris": [- 1,- [- 7,- {}- ],- [- 18,- "x86_64-solaris"- ]- ]- }- ],- "element"- ],- [- 18,- ","- ]- ],- "result"- ],- {- "Empty": [- 7,- {}- ]- }- ]- ]- }- ],- "status",- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ]- ]- ]- ]- ],- [- 12,- "Empty",- [- 8,- {}- ],- {- "NonEmpty": "Text"- }- ]- ],- "Text"- ]- ],- [- 18,- " "- ]- ],- [- 9,- "x",- "key"- ]- ],- [- 18,- " "- ]- ],- [- 0,- "Integer/show",- [- 0,- "Natural/toInteger",- [- 9,- "x",- "cores"- ]- ]- ]- ],- [- 18,- " "- ]- ],- [- 0,- "Integer/show",- [- 0,- "Natural/toInteger",- [- 9,- "x",- "speedFactor"- ]- ]- ]- ],- [- 18,- " "- ]- ],- [- 6,- [- 8,- {- "Empty": [- 1,- [- 7,- {}- ],- [- 18,- ""- ]- ],- "NonEmpty": [- 1,- "result",- "Text",- "result"- ]- }- ],- [- 0,- [- 0,- [- 0,- [- 0,- [- 0,- "List/fold",- "Text"- ],- [- 9,- "x",- "supportedFeatures"- ]- ],- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ]- ],- [- 1,- "element",- "Text",- [- 1,- "status",- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ],- [- 6,- [- 8,- {- "Empty": [- 1,- [- 7,- {}- ],- [- 12,- "NonEmpty",- "element",- {- "Empty": [- 7,- {}- ]- }- ]- ],- "NonEmpty": [- 1,- "result",- "Text",- [- 12,- "NonEmpty",- [- 3,- 6,- [- 3,- 6,- "element",- [- 18,- ","- ]- ],- "result"- ],- {- "Empty": [- 7,- {}- ]- }- ]- ]- }- ],- "status",- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ]- ]- ]- ]- ],- [- 12,- "Empty",- [- 8,- {}- ],- {- "NonEmpty": "Text"- }- ]- ],- "Text"- ]- ],- [- 18,- " "- ]- ],- [- 6,- [- 8,- {- "Empty": [- 1,- [- 7,- {}- ],- [- 18,- ""- ]- ],- "NonEmpty": [- 1,- "result",- "Text",- "result"- ]- }- ],- [- 0,- [- 0,- [- 0,- [- 0,- [- 0,- "List/fold",- "Text"- ],- [- 9,- "x",- "mandatoryFeatures"- ]- ],- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ]- ],- [- 1,- "element",- "Text",- [- 1,- "status",- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ],- [- 6,- [- 8,- {- "Empty": [- 1,- [- 7,- {}- ],- [- 12,- "NonEmpty",- "element",- {- "Empty": [- 7,- {}- ]- }- ]- ],- "NonEmpty": [- 1,- "result",- "Text",- [- 12,- "NonEmpty",- [- 3,- 6,- [- 3,- 6,- "element",- [- 18,- ","- ]- ],- "result"- ],- {- "Empty": [- 7,- {}- ]- }- ]- ]- }- ],- "status",- [- 11,- {- "Empty": [- 7,- {}- ],- "NonEmpty": "Text"- }- ]- ]- ]- ]- ],- [- 12,- "Empty",- [- 8,- {}- ],- {- "NonEmpty": "Text"- }- ]- ],- "Text"- ]- ],- [- 18,- "\n"- ]- ],- "y"- ]- ]- ]- ],- [- 18,- ""- ]- ]-]
@@ -1,3 +0,0 @@- let x = 1-in let y : Integer = 2-in x
@@ -1,19 +0,0 @@-[- 25,- "x",- null,- [- 15,- 1- ],- [- 25,- "y",- "Integer",- [- 15,- 2- ],- "x"- ]-]
@@ -1,3 +0,0 @@--- foo--1
@@ -1,4 +0,0 @@-[- 15,- 1-]
@@ -1,4 +0,0 @@-[ [1, 2, 3]-, [1, 2, 3] : List Integer-, [] : List Integer-]
@@ -1,40 +0,0 @@-[- 4,- null,- [- 4,- null,- [- 15,- 1- ],- [- 15,- 2- ],- [- 15,- 3- ]- ],- [- 4,- null,- [- 15,- 1- ],- [- 15,- 2- ],- [- 15,- 3- ]- ],- [- 4,- "Integer"- ]-]
@@ -1,7 +0,0 @@- λ(x : <>)-→ { bar = merge {=} x : Integer- , foo =- merge- { Left = λ(b : Bool) → b, Right = Natural/even }- < Left = True | Right : Natural >- }
@@ -1,45 +0,0 @@-[- 1,- "x",- [- 11,- {}- ],- [- 8,- {- "bar": [- 6,- [- 8,- {}- ],- "x",- "Integer"- ],- "foo": [- 6,- [- 8,- {- "Left": [- 1,- "b",- "Bool",- "b"- ],- "Right": "Natural/even"- }- ],- [- 12,- "Left",- true,- {- "Right": "Natural"- }- ]- ]- }- ]-]
@@ -1,3 +0,0 @@-let a = 1-let b = 2-in a + b
@@ -1,21 +0,0 @@-[- 25,- "a",- null,- [- 15,- 1- ],- "b",- null,- [- 15,- 2- ],- [- 3,- 4,- "a",- "b"- ]-]
@@ -1,1 +0,0 @@-[ +0, +1, +01, +10 ]
@@ -1,20 +0,0 @@-[- 4,- null,- [- 16,- 0- ],- [- 16,- 1- ],- [- 16,- 1- ],- [- 16,- 10- ]-]
@@ -1,3 +0,0 @@-{- foo {- bar -} baz -}--1
@@ -1,4 +0,0 @@-[- 15,- 1-]
@@ -1,2 +0,0 @@- { foo = (False && Natural/even (+1 + +2 * +3)) || True == False != True }-∧ { bar = [ "ABC" ++ "DEF" ] # [ "GHI" ] } ⫽ { baz = True }
@@ -1,96 +0,0 @@-[- 3,- 8,- [- 8,- {- "foo": [- 3,- 0,- [- 3,- 1,- false,- [- 0,- "Natural/even",- [- 3,- 4,- [- 16,- 1- ],- [- 3,- 5,- [- 16,- 2- ],- [- 16,- 3- ]- ]- ]- ]- ],- [- 3,- 3,- [- 3,- 2,- true,- false- ],- true- ]- ]- }- ],- [- 3,- 9,- [- 8,- {- "bar": [- 3,- 7,- [- 4,- null,- [- 3,- 6,- [- 18,- "ABC"- ],- [- 18,- "DEF"- ]- ]- ],- [- 4,- null,- [- 18,- "GHI"- ]- ]- ]- }- ],- [- 8,- {- "baz": true- }- ]- ]-]
@@ -1,1 +0,0 @@-https://raw.githubusercontent.com/dhall-lang/Prelude/c79c2bc3c46f129cc5b6d594ce298a381bcae92c/List/replicate using (./a.dhall sha256:16173e984d35ee3ffd8b6b79167df89480e67d1cd03ea5d0fc93689e4d928e61) sha256:b0e3ec1797b32c80c0bcb7e8254b08c7e9e35e75e6b410c7ac21477ab90167ad
@@ -1,27 +0,0 @@-[- 24,- [- "sha256",- "b0e3ec1797b32c80c0bcb7e8254b08c7e9e35e75e6b410c7ac21477ab90167ad"- ],- 0,- [- 24,- [- "sha256",- "16173e984d35ee3ffd8b6b79167df89480e67d1cd03ea5d0fc93689e4d928e61"- ],- 0,- 3,- "a.dhall"- ],- 1,- "raw.githubusercontent.com",- "dhall-lang",- "Prelude",- "c79c2bc3c46f129cc5b6d594ce298a381bcae92c",- "List",- "replicate",- null,- null-]
@@ -1,3 +0,0 @@--- Verify that certain punctuation marks terminate paths correctly- λ(x : ./example)-→ [./example, {bar = <baz = ./example>, qux = ./example}, ./example]
@@ -1,53 +0,0 @@-[- 1,- "x",- [- 24,- null,- 0,- 3,- "example"- ],- [- 4,- null,- [- 24,- null,- 0,- 3,- "example"- ],- [- 8,- {- "qux": [- 24,- null,- 0,- 3,- "example"- ],- "bar": [- 12,- "baz",- [- 24,- null,- 0,- 3,- "example"- ],- {}- ]- }- ],- [- 24,- null,- 0,- 3,- "example"- ]- ]-]
@@ -1,5 +0,0 @@-[ /absolute/path-, ./relative/path-, ~/home/anchored/path-, /ipfs/QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx/Prelude-]
@@ -1,38 +0,0 @@-[- 4,- null,- [- 24,- null,- 0,- 2,- "absolute",- "path"- ],- [- 24,- null,- 0,- 3,- "relative",- "path"- ],- [- 24,- null,- 0,- 5,- "home",- "anchored",- "path"- ],- [- 24,- null,- 0,- 2,- "ipfs",- "QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx",- "Prelude"- ]-]
@@ -1,4 +0,0 @@-{ example1 = let `let` = 1 in `let`-, example2 = let `:.` = 1 in `:.`-, example3 = let `$ref` = 1 in `$ref`-}
@@ -1,35 +0,0 @@-[- 8,- {- "example1": [- 25,- "let",- null,- [- 15,- 1- ],- "let"- ],- "example2": [- 25,- ":.",- null,- [- 15,- 1- ],- ":."- ],- "example3": [- 25,- "$ref",- null,- [- 15,- 1- ],- "$ref"- ]- }-]
@@ -1,3 +0,0 @@-{ example0 = /"foo"/bar/"baz qux"-, example1 = https://example.com/foo/"bar?baz"?qux-}
@@ -1,26 +0,0 @@-[- 8,- {- "example0": [- 24,- null,- 0,- 2,- "foo",- "bar",- "baz qux"- ],- "example1": [- 24,- null,- 0,- null,- 1,- "example.com",- "foo",- "bar?baz",- "qux",- null- ]- }-]
@@ -1,4 +0,0 @@-{ foo = 1-, bar = +2-, baz = True-} : { foo : Integer, bar : Natural, baz : Bool }
@@ -1,25 +0,0 @@-[- 26,- [- 8,- {- "foo": [- 15,- 1- ],- "bar": [- 16,- 2- ],- "baz": true- }- ],- [- 7,- {- "foo": "Integer",- "bar": "Natural",- "baz": "Bool"- }- ]-]
@@ -1,1 +0,0 @@-let TypeSynonym = Integer in 1 : TypeSynonym
@@ -1,14 +0,0 @@-[- 25,- "TypeSynonym",- null,- "Integer",- [- 26,- [- 15,- 1- ],- "TypeSynonym"- ]-]
@@ -1,4 +0,0 @@-''-ABC-DEF-''
@@ -1,4 +0,0 @@-[- 18,- "ABC\nDEF\n"-]
@@ -1,1 +0,0 @@-Sort
@@ -1,1 +0,0 @@-"Sort"
@@ -1,13 +0,0 @@- \(record : { name : Text- , value : Double- , taxed_value : Double- , in_ca : Bool- }- ) -> ''-Hello ${record.name}-You have just won ${Double/show record.value} dollars!-${ if record.in_ca- then "Well, ${Double/show record.taxed_value} dollars, after taxes"- else ""- }-''
@@ -1,60 +0,0 @@-[- 1,- "record",- [- 7,- {- "name": "Text",- "value": "Double",- "taxed_value": "Double",- "in_ca": "Bool"- }- ],- [- 18,- "Hello ",- [- 9,- "record",- "name"- ],- "\nYou have just won ",- [- 0,- "Double/show",- [- 9,- "record",- "value"- ]- ],- " dollars!\n",- [- 14,- [- 9,- "record",- "in_ca"- ],- [- 18,- "Well, ",- [- 0,- "Double/show",- [- 9,- "record",- "taxed_value"- ]- ],- " dollars, after taxes"- ],- [- 18,- ""- ]- ],- "\n"- ]-]
@@ -1,3 +0,0 @@-{- ∀(a : Type) → a -}--1
@@ -1,4 +0,0 @@-[- 15,- 1-]
@@ -1,1 +0,0 @@-"∀(a : Type) → a"
@@ -1,4 +0,0 @@-[- 18,- "∀(a : Type) → a"-]
@@ -1,4 +0,0 @@-< A : { }-| B = { = }-| C : {}-> : < A : {} | B : {} | C : {} >
@@ -1,38 +0,0 @@-[- 26,- [- 12,- "B",- [- 8,- {}- ],- {- "A": [- 7,- {}- ],- "C": [- 7,- {}- ]- }- ],- [- 11,- {- "A": [- 7,- {}- ],- "B": [- 7,- {}- ],- "C": [- 7,- {}- ]- }- ]-]
@@ -1,12 +0,0 @@-[ http://example.com/someFile.dhall-, https://john:doe@example.com:8080/foo/bar?qux=0#xyzzy-, http://prelude.dhall-lang.org/package.dhall-, https://ipfs.io/ipfs/QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx/Prelude-, https://raw.githubusercontent.com/dhall-lang/dhall-haskell/18e4e9a18dc53271146df3ccf5b4177c3552236b/examples/True-, https://127.0.0.1/index.dhall-, https://[::]/index.dhall-, https://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/tutorial.dhall-- -- Yes, this is legal-, https://-._~%2C!$&'()*+,;=:@-._~%2C!$&'()*+,;=:/foo?/-._~%2C!$&'()*+,;=:@/?#/-._~%2C!$&'()*+,;=:@/?-]
@@ -1,110 +0,0 @@-[- 4,- null,- [- 24,- null,- 0,- null,- 0,- "example.com",- "someFile.dhall",- null,- null- ],- [- 24,- null,- 0,- null,- 1,- "john:doe@example.com:8080",- "foo",- "bar",- "qux=0",- "xyzzy"- ],- [- 24,- null,- 0,- null,- 0,- "prelude.dhall-lang.org",- "package.dhall",- null,- null- ],- [- 24,- null,- 0,- null,- 1,- "ipfs.io",- "ipfs",- "QmQ8w5PLcsNz56dMvRtq54vbuPe9cNnCCUXAQp6xLc6Ccx",- "Prelude",- null,- null- ],- [- 24,- null,- 0,- null,- 1,- "raw.githubusercontent.com",- "dhall-lang",- "dhall-haskell",- "18e4e9a18dc53271146df3ccf5b4177c3552236b",- "examples",- "True",- null,- null- ],- [- 24,- null,- 0,- null,- 1,- "127.0.0.1",- "index.dhall",- null,- null- ],- [- 24,- null,- 0,- null,- 1,- "[::]",- "index.dhall",- null,- null- ],- [- 24,- null,- 0,- null,- 1,- "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]",- "tutorial.dhall",- null,- null- ],- [- 24,- null,- 0,- null,- 1,- "-._~%2C!$&'()*+,;=:@-._~%2C!$&'()*+,;=:",- "foo",- "/-._~%2C!$&'()*+,;=:@/?",- "/-._~%2C!$&'()*+,;=:@/?"- ]-]
@@ -1,3 +0,0 @@--1-
@@ -1,4 +0,0 @@-[- 15,- 1-]
@@ -1,9 +0,0 @@- -- This- - Natural/even {-- -{- file--} - has- - -} +2 -- mixed {- line endings -}
@@ -1,8 +0,0 @@-[- 0,- "Natural/even",- [- 16,- 2- ]-]
@@ -1,1 +0,0 @@-constructors <>
@@ -1,4 +1,4 @@- let MyType = constructors < Empty : {} | Person : { name : Text, age : Natural } >+ let MyType = < Empty : {} | Person : { name : Text, age : Natural } > in [ MyType.Empty {=} , MyType.Person { name = "John", age = 23 } , MyType.Person { name = "Amy" , age = 25 }
@@ -1,1 +1,1 @@-constructors < Empty : {} | Person : { name : Text, age : Natural } >+< Empty : {} | Person : { name : Text, age : Natural } >
@@ -1,1 +0,0 @@-{ foo = 1 } ∧ { bar = Text }
@@ -1,49 +0,0 @@- let bottom : Type = ∀(any : Type) → any--in let not : Type → Type = λ(p : Type) → p → bottom--in let pow = λ(X : Kind) → X → Type--in let U = ∀(X : Kind) → (pow (pow X) → X) → pow (pow X)--in let tau- : pow (pow U) → U- = λ(t : pow (pow U))- → λ(X : Kind)- → λ(f : pow (pow X) → X)- → λ(p : pow X)- → t (λ(x : U) → p (f (x X f)))--in let sigma : U → pow (pow U) = λ(s : U) → s U (λ(t : pow (pow U)) → tau t)--in let Delta- : pow U- = λ(y : U) → not (∀(p : pow U) → sigma y p → p (tau (sigma y)))--in let Omega : U = tau (λ(p : pow U) → ∀(x : U) → sigma x p → p x)--in let Theta : Type = ∀(p : pow U) → (∀(x : U) → sigma x p → p x) → p Omega--in let D : Type = ∀(p : pow U) → sigma Omega p → p (tau (sigma Omega))--in let lem1- : ∀(p : pow U) → (∀(x : U) → sigma x p → p x) → p Omega- = λ(p : pow U)- → λ(t1 : ∀(x : U) → sigma x p → p x)- → t1 Omega (λ(x : U) → t1 (tau (sigma x)))--in let lem3 : D = λ(p : pow U) → lem1 (λ(y : U) → p (tau (sigma y)))--in let lem2- : not D- = lem1- Delta- ( λ(x : U)- → λ(H2 : sigma x Delta)- → λ(H3 : ∀(p : pow U) → sigma x p → p (tau (sigma x)))- → H3 Delta H2 (λ(pp : pow U) → H3 (λ(y : U) → pp (tau (sigma y))))- )--in let evidence : bottom = lem2 lem3--in evidence
@@ -1,1 +0,0 @@-< Left : Natural | Right : Type >
@@ -1,1 +0,0 @@-{ foo = 1 } ⫽ { bar = Text }
@@ -1,4 +0,0 @@- λ ( record- : ∀(k : Kind) → ∀(makeRecord : ∀(x : Type) → ∀(y : Type → Type) → k) → k- )-→ record Type (λ(x : Type) → λ(y : Type → Type) → x)
@@ -1,4 +0,0 @@- ∀ ( record- : ∀(k : Kind) → ∀(makeRecord : ∀(x : Type) → ∀(y : Type → Type) → k) → k- )-→ Type
@@ -1,1 +0,0 @@-λ(record : { x : Type, y : Type → Type }) → record.x
@@ -1,1 +0,0 @@-∀(record : { x : Type, y : Type → Type }) → Type
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/and [ True, False, True ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/and ([] : List Bool)
@@ -1,1 +0,0 @@-Bool
@@ -1,2 +0,0 @@-../../../../../../Prelude/Bool/build -(λ(bool : Type) → λ(true : bool) → λ(false : bool) → true)
@@ -1,1 +0,0 @@-Bool
@@ -1,2 +0,0 @@-../../../../../../Prelude/Bool/build -(λ(bool : Type) → λ(true : bool) → λ(false : bool) → false)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/even [ False, True, False ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/even [ False, True ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/even [ False ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/even ([] : List Bool)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/fold True Natural 0 1
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/fold False Natural 0 1
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/not True
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/not False
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/odd [ True, False, True ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/odd [ True, False ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/odd [ True ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/odd ([] : List Bool)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/or [ True, False, True ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/or ([] : List Bool)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/show True
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Bool/show False
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Double/show -3.1
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Double/show 0.4
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Integer/show -3
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Integer/show +0
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Integer/toDouble -3
@@ -1,1 +0,0 @@-Double
@@ -1,1 +0,0 @@-../../../../../../Prelude/Integer/toDouble +2
@@ -1,1 +0,0 @@-Double
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/all Natural Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/all Natural Natural/even ([] : List Natural)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/any Natural Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/any Natural Natural/even ([] : List Natural)
@@ -1,1 +0,0 @@-Bool
@@ -1,7 +0,0 @@-../../../../../../Prelude/List/build-Text-( λ(list : Type)-→ λ(cons : Text → list → list)-→ λ(nil : list)-→ cons "ABC" (cons "DEF" nil)-)
@@ -1,1 +0,0 @@-List Text
@@ -1,7 +0,0 @@-../../../../../../Prelude/List/build-Text-( λ(list : Type)-→ λ(cons : Text → list → list)-→ λ(nil : list)-→ nil-)
@@ -1,1 +0,0 @@-List Text
@@ -1,5 +0,0 @@-../../../../../../Prelude/List/concat Natural-[ [ 0, 1, 2 ]-, [ 3, 4 ]-, [ 5, 6, 7, 8 ]-]
@@ -1,1 +0,0 @@-List Natural
@@ -1,5 +0,0 @@-../../../../../../Prelude/List/concat Natural-[ [] : List Natural-, [] : List Natural-, [] : List Natural-]
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/concatMap Natural Natural (λ(n : Natural) → [ n, n ]) [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/concatMap Natural Natural (λ(n : Natural) → [ n, n ]) ([] : List Natural)
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/filter Natural Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/filter Natural Natural/odd [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-List Natural
@@ -1,6 +0,0 @@-../../../../../../Prelude/List/fold-Natural-[ 2, 3, 5 ]-Natural-(λ(x : Natural) → λ(y : Natural) → x + y)-0
@@ -1,1 +0,0 @@-Natural
@@ -1,7 +0,0 @@- λ(nil : Natural)-→ ../../../../../../Prelude/List/fold- Natural- [ 2, 3, 5 ]- Natural- (λ(x : Natural) → λ(y : Natural) → x + y)- nil
@@ -1,1 +0,0 @@-∀(nil : Natural) → Natural
@@ -1,4 +0,0 @@- λ(list : Type)-→ λ(cons : Natural → list → list)-→ λ(nil : list)-→ ../../../../../../Prelude/List/fold Natural [ 2, 3, 5 ] list cons nil
@@ -1,1 +0,0 @@-∀(list : Type) → ∀(cons : Natural → list → list) → ∀(nil : list) → list
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/generate 5 Bool Natural/even
@@ -1,1 +0,0 @@-List Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/generate 0 Bool Natural/even
@@ -1,1 +0,0 @@-List Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/head Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/head Natural ([] : List Natural)
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/indexed Bool [ True, False, True ]
@@ -1,1 +0,0 @@-List { index : Natural, value : Bool }
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/indexed Bool ([] : List Bool)
@@ -1,1 +0,0 @@-List { index : Natural, value : Bool }
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/iterate 10 Natural (λ(x : Natural) → x * 2) 1
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/iterate 0 Natural (λ(x : Natural) → x * 2) 1
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/last Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/last Natural ([] : List Natural)
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/length Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/length Natural ([] : List Natural)
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/map Natural Bool Natural/even [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-List Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/map Natural Bool Natural/even ([] : List Natural)
@@ -1,1 +0,0 @@-List Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/null Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/null Natural ([] : List Natural)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/replicate 9 Natural 1
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/replicate 0 Natural 1
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/reverse Natural [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/reverse Natural ([] : List Natural)
@@ -1,1 +0,0 @@-List Natural
@@ -1,15 +0,0 @@-../../../../../../Prelude/List/shifted-Bool-[ [ { index = 0, value = True }- , { index = 1, value = True }- , { index = 2, value = False }- ]-, [ { index = 0, value = False }- , { index = 1, value = False }- ]-, [ { index = 0, value = True }- , { index = 1, value = True }- , { index = 2, value = True }- , { index = 3, value = True }- ]-]
@@ -1,1 +0,0 @@-List { index : Natural, value : Bool }
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/shifted Bool ([] : List (List { index : Natural, value : Bool }))
@@ -1,1 +0,0 @@-List { index : Natural, value : Bool }
@@ -1,7 +0,0 @@-../../../../../../Prelude/List/unzip-Text-Bool-[ { _1 = "ABC", _2 = True }-, { _1 = "DEF", _2 = False }-, { _1 = "GHI", _2 = True }-]
@@ -1,1 +0,0 @@-{ _1 : List Text, _2 : List Bool }
@@ -1,1 +0,0 @@-../../../../../../Prelude/List/unzip Text Bool ([] : List { _1 : Text, _2 : Bool })
@@ -1,1 +0,0 @@-{ _1 : List Text, _2 : List Bool }
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Bool`.and
@@ -1,1 +0,0 @@-../../../../../Prelude/Monoid Bool
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Bool`.or
@@ -1,1 +0,0 @@-../../../../../Prelude/Monoid Bool
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Bool`.even
@@ -1,1 +0,0 @@-../../../../../Prelude/Monoid Bool
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Bool`.odd
@@ -1,1 +0,0 @@-../../../../../Prelude/Monoid Bool
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`List`.concat
@@ -1,1 +0,0 @@-∀(a : Type) → ../../../../../Prelude/Monoid (List a)
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`List`.shifted
@@ -1,1 +0,0 @@-∀(a : Type) → ../../../../../Prelude/Monoid (List { index : Natural, value : a })
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Natural`.sum
@@ -1,1 +0,0 @@-../../../../../Prelude/Monoid Natural
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Natural`.product
@@ -1,1 +0,0 @@-../../../../../Prelude/Monoid Natural
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Optional`.head
@@ -1,1 +0,0 @@-∀(a : Type) → ../../../../../Prelude/Monoid (Optional a)
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Optional`.last
@@ -1,1 +0,0 @@-∀(a : Type) → ../../../../../Prelude/Monoid (Optional a)
@@ -1,1 +0,0 @@-(../../../../../Prelude/package.dhall).`Text`.concat
@@ -1,1 +0,0 @@-../../../../../Prelude/Monoid Text
@@ -1,6 +0,0 @@-../../../../../../Prelude/Natural/build-( λ(natural : Type)-→ λ(succ : natural → natural)-→ λ(zero : natural)-→ succ (succ (succ zero))-)
@@ -1,1 +0,0 @@-Natural
@@ -1,6 +0,0 @@-../../../../../../Prelude/Natural/build-( λ(natural : Type)-→ λ(succ : natural → natural)-→ λ(zero : natural)-→ zero-)
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/enumerate 10
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/enumerate 0
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/even 3
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/even 0
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/fold 3 Natural (λ(x : Natural) → 5 * x) 1
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-λ(zero : Natural) → ../../../../../../Prelude/Natural/fold 3 Natural (λ(x : Natural) → 5 * x) zero
@@ -1,1 +0,0 @@-∀(zero : Natural) → Natural
@@ -1,4 +0,0 @@- λ(natural : Type)-→ λ(succ : natural → natural)-→ λ(zero : natural)-→ ../../../../../../Prelude/Natural/fold 3 natural succ zero
@@ -1,1 +0,0 @@-∀(natural : Type) → ∀(succ : natural → natural) → ∀(zero : natural) → natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/isZero 2
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/isZero 0
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/odd 3
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/odd 0
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/product [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/product ([] : List Natural)
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/show 3
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/show 0
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/sum [ 2, 3, 5 ]
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/sum ([] : List Natural)
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/toDouble 3
@@ -1,1 +0,0 @@-Double
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/toDouble 0
@@ -1,1 +0,0 @@-Double
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/toInteger 3
@@ -1,1 +0,0 @@-Integer
@@ -1,1 +0,0 @@-../../../../../../Prelude/Natural/toInteger 0
@@ -1,1 +0,0 @@-Integer
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/all Natural Natural/even (Some 3)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/all Natural Natural/even (None Natural)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/any Natural Natural/even (Some 2)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/any Natural Natural/even (None Natural)
@@ -1,1 +0,0 @@-Bool
@@ -1,7 +0,0 @@-../../../../../../Prelude/Optional/build-Natural-( λ(optional : Type)-→ λ(some : Natural → optional)-→ λ(none : optional)-→ some 1-)
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,7 +0,0 @@-../../../../../../Prelude/Optional/build-Natural-( λ(optional : Type)-→ λ(some : Natural → optional)-→ λ(none : optional)-→ none-)
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/concat Natural (Some (Some 1))
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/concat Natural (Some (None Natural))
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/concat Natural (None (Optional Natural))
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/filter Natural Natural/even (Some 2)
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/filter Natural Natural/odd (Some 2)
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/fold Natural (Some 2) Natural (λ(x : Natural) → x) 0
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/fold Natural (None Natural) Natural (λ(x : Natural) → x) 0
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/head Natural [ None Natural, Some 1, Some 2 ]
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/head Natural [ None Natural, None Natural ]
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/head Natural ([] : List (Optional Natural))
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/last Natural [ None Natural, Some 1, Some 2 ]
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/last Natural [ None Natural, None Natural ]
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/last Natural ([] : List (Optional Natural))
@@ -1,1 +0,0 @@-Optional Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/length Natural (Some 2)
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/length Natural (None Natural)
@@ -1,1 +0,0 @@-Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/map Natural Bool Natural/even (Some 3)
@@ -1,1 +0,0 @@-Optional Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/map Natural Bool Natural/even (None Natural)
@@ -1,1 +0,0 @@-Optional Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/null Natural (Some 2)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/null Natural (None Natural)
@@ -1,1 +0,0 @@-Bool
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/toList Natural (Some 1)
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/toList Natural (None Natural)
@@ -1,1 +0,0 @@-List Natural
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/unzip Text Bool (Some { _1 = "ABC", _2 = True })
@@ -1,1 +0,0 @@-{ _1 : Optional Text, _2 : Optional Bool }
@@ -1,1 +0,0 @@-../../../../../../Prelude/Optional/unzip Text Bool (None { _1 : Text, _2 : Bool })
@@ -1,1 +0,0 @@-{ _1 : Optional Text, _2 : Optional Bool }
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concat [ "ABC", "DEF", "GHI" ]
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concat ([] : List Text)
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concatMap Natural (λ(n : Natural) → "${Natural/show n} ") [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concatMap Natural (λ(n : Natural) → "${Natural/show n} ") ([] : List Natural)
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concatMapSep ", " Natural Natural/show [ 0, 1, 2 ]
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concatMapSep ", " Natural Natural/show ([] : List Natural)
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concatSep ", " [ "ABC", "DEF", "GHI" ]
@@ -1,1 +0,0 @@-Text
@@ -1,1 +0,0 @@-../../../../../../Prelude/Text/concatSep ", " ([] : List Text)
@@ -1,1 +0,0 @@-Text
@@ -1,3 +0,0 @@-let types = { Scopes = < Public : {} | Private : {} >}-let prelude = { types = types }-in prelude.types.Scopes.Public {=}
@@ -1,1 +0,0 @@-< Public : {} | Private : {} >
@@ -1,1 +0,0 @@-{ x = Text, y = List }
@@ -1,1 +0,0 @@-{ x : Type, y : Type → Type }
@@ -1,1 +0,0 @@-{ x = Text }.x
@@ -1,1 +0,0 @@-Type
@@ -1,1 +0,0 @@-< Foo : Text | Bar : Natural >.Foo
@@ -1,1 +0,0 @@-∀(Foo : Text) → < Bar : Natural | Foo : Text >
@@ -1,1 +0,0 @@-< Left = List | Right : Type >
@@ -1,1 +0,0 @@-< Left : Type → Type | Right : Type >
@@ -1,5 +0,0 @@- let anonymousFunction = λ(a : Type) → List a--in λ(HigherOrderType : (Type → Type) → Type)- → λ(x : HigherOrderType anonymousFunction)- → (x : HigherOrderType anonymousFunction)
@@ -1,4 +0,0 @@- ∀(HigherOrderType : (Type → Type) → Type)-→ ∀(x : HigherOrderType (λ(a : Type) → List a))-→ HigherOrderType (λ(a : Type) → List a)-
@@ -1,1 +0,0 @@-{ x = Bool, y = Text, z = List }
@@ -1,1 +0,0 @@-{ x : Type, y : Type, z : Type → Type }
@@ -1,1 +0,0 @@-λ(k : Kind) → λ(a : k → k → Type) → λ(x : k) → a x
@@ -1,1 +0,0 @@-∀(k : Kind) → (k → k → Type) → k → k → Type
@@ -1,6 +0,0 @@- let Foo = < Bar : {} | Baz : {} >--in λ(a : Type)- → λ(f : {} → a)- → λ(ts : Foo)- → merge { Bar = λ(a : {}) → f a, Baz = f } ts
@@ -1,1 +0,0 @@-∀(a : Type) → ∀(f : {} → a) → ∀(ts : < Bar : {} | Baz : {} >) → a
@@ -1,7 +0,0 @@--- Verify that users can use `.` to both access a record field and a union--- constructor within the same expression. This is a common idiom if a user--- provides a types package.--let Scope = < Public : {} | Private : {} >-let types = { Scope = Scope }-in types.Scope.Public {=}
@@ -1,1 +0,0 @@-< Private : {} | Public : {} >
@@ -1,1 +0,0 @@-< Left = List | Right : Type >
@@ -1,1 +0,0 @@-< Left : Type → Type | Right : Type >