gitextract_9bjoz56v/ ├── .envrc ├── .gitattributes ├── .gitignore ├── .hlint.yaml ├── .stylish-haskell.yaml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── Setup.hs ├── dependencies/ │ ├── .gitkeep │ ├── grace-ghcjs.nix │ ├── grace.nix │ └── openai.nix ├── doctest/ │ └── Main.hs ├── examples/ │ ├── bluesky/ │ │ └── 2025-11-27.ffg │ ├── chaining.ffg │ ├── code.ffg │ ├── emotion-wheel.ffg │ ├── eval.ffg │ ├── history.ffg │ ├── learn-in-y-minutes.ffg │ ├── mustache.ffg │ ├── poem.ffg │ ├── prompt.ffg │ ├── taxes.ffg │ ├── tools.ffg │ ├── transform-text.ffg │ ├── tutorial/ │ │ ├── coding.ffg │ │ ├── conclusion.ffg │ │ ├── data.ffg │ │ ├── functions.ffg │ │ ├── hello.ffg │ │ ├── html.ffg │ │ ├── imports.ffg │ │ ├── prompting.ffg │ │ └── variables.ffg │ └── users.ffg ├── flake.nix ├── garnix.yaml ├── ghc/ │ └── Grace/ │ ├── DataFile.hs │ ├── HTTP.hs │ └── Width.hs ├── ghcjs/ │ └── Grace/ │ ├── DataFile.hs │ ├── HTTP.hs │ ├── Size.hs │ └── Width.hs ├── grace/ │ └── Main.hs ├── grace.cabal ├── prelude/ │ ├── bool/ │ │ ├── and.ffg │ │ ├── not.ffg │ │ ├── or.ffg │ │ └── package.ffg │ ├── integer/ │ │ ├── clamp.ffg │ │ ├── package.ffg │ │ ├── product.ffg │ │ ├── sum.ffg │ │ └── toNatural.ffg │ ├── list/ │ │ ├── all.ffg │ │ ├── any.ffg │ │ ├── concat.ffg │ │ ├── generate.ffg │ │ ├── null.ffg │ │ ├── package.ffg │ │ ├── reject.ffg │ │ ├── replicate.ffg │ │ └── select.ffg │ ├── natural/ │ │ ├── package.ffg │ │ ├── product.ffg │ │ └── sum.ffg │ ├── package.ffg │ ├── real/ │ │ ├── package.ffg │ │ ├── product.ffg │ │ └── sum.ffg │ └── text/ │ ├── concat.ffg │ ├── concatMap.ffg │ ├── concatMapSep.ffg │ ├── concatSep.ffg │ └── package.ffg ├── prompts/ │ ├── abnf.md │ └── inference.md ├── src/ │ ├── Grace/ │ │ ├── Aeson.hs │ │ ├── Compat.hs │ │ ├── Context.hs │ │ ├── Decode.hs │ │ ├── Domain.hs │ │ ├── Encode.hs │ │ ├── Existential.hs │ │ ├── GitHub.hs │ │ ├── HTTP/ │ │ │ └── Type.hs │ │ ├── Import.hs │ │ ├── Infer.hs │ │ ├── Input.hs │ │ ├── Interpret.hs │ │ ├── Interpret.hs-boot │ │ ├── Label.hs │ │ ├── Location.hs │ │ ├── Marshal.hs │ │ ├── Monad.hs │ │ ├── Monotype.hs │ │ ├── Normalize.hs │ │ ├── Parallelizable.hs │ │ ├── Parser.hs │ │ ├── Pretty.hs │ │ ├── Prompt/ │ │ │ └── Types.hs │ │ ├── Prompt.hs │ │ ├── REPL.hs │ │ ├── Syntax.hs │ │ ├── TH.hs │ │ ├── Type.hs │ │ └── Value.hs │ └── Grace.hs ├── tasty/ │ ├── Main.hs │ └── data/ │ ├── complex/ │ │ ├── abstract-fold-input.ffg │ │ ├── abstract-fold-output.ffg │ │ ├── abstract-fold-type.ffg │ │ ├── alternative-input.ffg │ │ ├── alternative-output.ffg │ │ ├── alternative-type.ffg │ │ ├── arithmetic-input.ffg │ │ ├── arithmetic-output.ffg │ │ ├── arithmetic-type.ffg │ │ ├── chain-identity-input.ffg │ │ ├── chain-identity-output.ffg │ │ ├── chain-identity-type.ffg │ │ ├── check-function-input.ffg │ │ ├── check-function-output.ffg │ │ ├── check-function-type.ffg │ │ ├── church-encode-list-input.ffg │ │ ├── church-encode-list-output.ffg │ │ ├── church-encode-list-type.ffg │ │ ├── default-arguments-input.ffg │ │ ├── default-arguments-output.ffg │ │ ├── default-arguments-type.ffg │ │ ├── destructure-lambda-input.ffg │ │ ├── destructure-lambda-output.ffg │ │ ├── destructure-lambda-type.ffg │ │ ├── destructure-let-argument-input.ffg │ │ ├── destructure-let-argument-output.ffg │ │ ├── destructure-let-argument-type.ffg │ │ ├── destructure-record-input.ffg │ │ ├── destructure-record-output.ffg │ │ ├── destructure-record-type.ffg │ │ ├── elaborate-inside-optional-input.ffg │ │ ├── elaborate-inside-optional-output.ffg │ │ ├── elaborate-inside-optional-type.ffg │ │ ├── equality-input.ffg │ │ ├── equality-output.ffg │ │ ├── equality-type.ffg │ │ ├── even-input.ffg │ │ ├── even-output.ffg │ │ ├── even-type.ffg │ │ ├── examples-input.ffg │ │ ├── examples-output.ffg │ │ ├── examples-type.ffg │ │ ├── exclaim-input.ffg │ │ ├── exclaim-output.ffg │ │ ├── exclaim-type.ffg │ │ ├── exhaust-type-variable-alphabet-input.ffg │ │ ├── exhaust-type-variable-alphabet-output.ffg │ │ ├── exhaust-type-variable-alphabet-type.ffg │ │ ├── existential-records-input.ffg │ │ ├── existential-records-output.ffg │ │ ├── existential-records-type.ffg │ │ ├── export-show-input.ffg │ │ ├── export-show-output.ffg │ │ ├── export-show-type.ffg │ │ ├── extra-fields-input.ffg │ │ ├── extra-fields-output.ffg │ │ ├── extra-fields-type.ffg │ │ ├── fold-bool-input.ffg │ │ ├── fold-bool-output.ffg │ │ ├── fold-bool-type.ffg │ │ ├── fold-json-input.ffg │ │ ├── fold-json-output.ffg │ │ ├── fold-json-type.ffg │ │ ├── fold-list-input.ffg │ │ ├── fold-list-output.ffg │ │ ├── fold-list-type.ffg │ │ ├── fold-missing-field-input.ffg │ │ ├── fold-missing-field-output.ffg │ │ ├── fold-missing-field-type.ffg │ │ ├── fold-natural-input.ffg │ │ ├── fold-natural-output.ffg │ │ ├── fold-natural-type.ffg │ │ ├── fold-optional-input.ffg │ │ ├── fold-optional-output.ffg │ │ ├── fold-optional-type.ffg │ │ ├── for-annotation-input.ffg │ │ ├── for-annotation-output.ffg │ │ ├── for-annotation-type.ffg │ │ ├── for-check-list-input.ffg │ │ ├── for-check-list-output.ffg │ │ ├── for-check-list-type.ffg │ │ ├── for-lambda-input.ffg │ │ ├── for-lambda-output.ffg │ │ ├── for-lambda-type.ffg │ │ ├── for-list-input.ffg │ │ ├── for-list-output.ffg │ │ ├── for-list-type.ffg │ │ ├── for-naked-output.ffg │ │ ├── for-naked-type.ffg │ │ ├── for-optional-input.ffg │ │ ├── for-optional-output.ffg │ │ ├── for-optional-type.ffg │ │ ├── forall-annotation-input.ffg │ │ ├── forall-annotation-output.ffg │ │ ├── forall-annotation-type.ffg │ │ ├── higher-rank-annotation-input.ffg │ │ ├── higher-rank-annotation-output.ffg │ │ ├── higher-rank-annotation-type.ffg │ │ ├── higher-rank-input.ffg │ │ ├── higher-rank-output.ffg │ │ ├── higher-rank-subtype-input.ffg │ │ ├── higher-rank-subtype-output.ffg │ │ ├── higher-rank-subtype-type.ffg │ │ ├── higher-rank-type.ffg │ │ ├── if-then-else-input.ffg │ │ ├── if-then-else-output.ffg │ │ ├── if-then-else-type.ffg │ │ ├── import-github-input.ffg │ │ ├── import-github-output.ffg │ │ ├── import-github-type.ffg │ │ ├── impredicative-const-input.ffg │ │ ├── impredicative-const-output.ffg │ │ ├── impredicative-const-type.ffg │ │ ├── index-input.ffg │ │ ├── index-output.ffg │ │ ├── index-type.ffg │ │ ├── inequality-input.ffg │ │ ├── inequality-output.ffg │ │ ├── inequality-type.ffg │ │ ├── infer-higher-order-input.ffg │ │ ├── infer-higher-order-output.ffg │ │ ├── infer-higher-order-type.ffg │ │ ├── infer-reverse-input.ffg │ │ ├── infer-reverse-output.ffg │ │ ├── infer-reverse-type.ffg │ │ ├── inner-forall-input.ffg │ │ ├── inner-forall-output.ffg │ │ ├── inner-forall-type.ffg │ │ ├── instantiate-nested-type-input.ffg │ │ ├── instantiate-nested-type-output.ffg │ │ ├── instantiate-nested-type-type.ffg │ │ ├── instantiate-variable-input.ffg │ │ ├── instantiate-variable-output.ffg │ │ ├── instantiate-variable-type.ffg │ │ ├── interpolate-default-input.ffg │ │ ├── interpolate-default-output.ffg │ │ ├── interpolate-default-type.ffg │ │ ├── interpolation-input.ffg │ │ ├── interpolation-output.ffg │ │ ├── interpolation-type.ffg │ │ ├── json-fold-input.ffg │ │ ├── json-fold-output.ffg │ │ ├── json-fold-type.ffg │ │ ├── keyword-prefix-input.ffg │ │ ├── keyword-prefix-output.ffg │ │ ├── keyword-prefix-type.ffg │ │ ├── lambda-annotation-input.ffg │ │ ├── lambda-annotation-output.ffg │ │ ├── lambda-annotation-type.ffg │ │ ├── let-functions-input.ffg │ │ ├── let-functions-output.ffg │ │ ├── let-functions-type.ffg │ │ ├── list-append-subtype-input.ffg │ │ ├── list-append-subtype-output.ffg │ │ ├── list-append-subtype-type.ffg │ │ ├── list-of-alternatives-input.ffg │ │ ├── list-of-alternatives-output.ffg │ │ ├── list-of-alternatives-type.ffg │ │ ├── list-unequal-length-input.ffg │ │ ├── list-unequal-length-output.ffg │ │ ├── list-unequal-length-type.ffg │ │ ├── merge-multiple-input.ffg │ │ ├── merge-multiple-output.ffg │ │ ├── merge-multiple-type.ffg │ │ ├── merge-optional-input.ffg │ │ ├── merge-optional-output.ffg │ │ ├── merge-optional-type.ffg │ │ ├── minus-natural-input.ffg │ │ ├── minus-natural-output.ffg │ │ ├── minus-natural-type.ffg │ │ ├── modulus-input.ffg │ │ ├── modulus-output.ffg │ │ ├── modulus-type.ffg │ │ ├── nested-arithmetic-input.ffg │ │ ├── nested-arithmetic-output.ffg │ │ ├── nested-arithmetic-type.ffg │ │ ├── nested-constructor-input.ffg │ │ ├── nested-constructor-output.ffg │ │ ├── nested-constructor-type.ffg │ │ ├── nested-fields-input.ffg │ │ ├── nested-fields-output.ffg │ │ ├── nested-fields-type.ffg │ │ ├── nested-let-input.ffg │ │ ├── nested-let-output.ffg │ │ ├── nested-let-type.ffg │ │ ├── numeric-subtyping-input.ffg │ │ ├── numeric-subtyping-output.ffg │ │ ├── numeric-subtyping-type.ffg │ │ ├── optional-fields-input.ffg │ │ ├── optional-fields-output.ffg │ │ ├── optional-fields-type.ffg │ │ ├── package-input.ffg │ │ ├── package-output.ffg │ │ ├── package-type.ffg │ │ ├── pattern-input.ffg │ │ ├── pattern-output.ffg │ │ ├── pattern-type.ffg │ │ ├── polymorphic-instantiation-input.ffg │ │ ├── polymorphic-instantiation-output.ffg │ │ ├── polymorphic-instantiation-type.ffg │ │ ├── polymorphic-let-input.ffg │ │ ├── polymorphic-let-output.ffg │ │ ├── polymorphic-let-type.ffg │ │ ├── polymorphic-subsumption-input.ffg │ │ ├── polymorphic-subsumption-output.ffg │ │ ├── polymorphic-subsumption-type.ffg │ │ ├── potpourri-input.ffg │ │ ├── potpourri-output.ffg │ │ ├── potpourri-type.ffg │ │ ├── predicative-null-input.ffg │ │ ├── predicative-null-output.ffg │ │ ├── predicative-null-type.ffg │ │ ├── prelude-input.ffg │ │ ├── prelude-output.ffg │ │ ├── prelude-type.ffg │ │ ├── preserve-row-input.ffg │ │ ├── preserve-row-output.ffg │ │ ├── preserve-row-type.ffg │ │ ├── principle-of-explosion-input.ffg │ │ ├── principle-of-explosion-output.ffg │ │ ├── principle-of-explosion-type.ffg │ │ ├── quantifiers-input.ffg │ │ ├── quantifiers-output.ffg │ │ ├── quantifiers-type.ffg │ │ ├── quoted-label-input.ffg │ │ ├── quoted-label-output.ffg │ │ ├── quoted-label-type.ffg │ │ ├── read-input.ffg │ │ ├── read-output.ffg │ │ ├── read-type.ffg │ │ ├── record-mismatch-both-extra-input.ffg │ │ ├── record-mismatch-both-extra-output.ffg │ │ ├── record-mismatch-both-extra-type.ffg │ │ ├── record-mismatch-left-extra-input.ffg │ │ ├── record-mismatch-left-extra-output.ffg │ │ ├── record-mismatch-left-extra-type.ffg │ │ ├── record-mismatch-right-extra-input.ffg │ │ ├── record-mismatch-right-extra-output.ffg │ │ ├── record-mismatch-right-extra-type.ffg │ │ ├── record-mismatch-two-extra-input.ffg │ │ ├── record-mismatch-two-extra-output.ffg │ │ ├── record-mismatch-two-extra-type.ffg │ │ ├── remote-transitive-import-input.ffg │ │ ├── remote-transitive-import-output.ffg │ │ ├── remote-transitive-import-type.ffg │ │ ├── restrict-project-input.ffg │ │ ├── restrict-project-output.ffg │ │ ├── restrict-project-type.ffg │ │ ├── separators-input.ffg │ │ ├── separators-output.ffg │ │ ├── separators-type.ffg │ │ ├── show-input.ffg │ │ ├── show-output.ffg │ │ ├── show-type.ffg │ │ ├── skolem-function-type-input.ffg │ │ ├── skolem-function-type-stderr.txt │ │ ├── slice-input.ffg │ │ ├── slice-output.ffg │ │ ├── slice-type.ffg │ │ ├── solve-fields-input.ffg │ │ ├── solve-fields-output.ffg │ │ ├── solve-fields-type.ffg │ │ ├── solve-unused-impredicative-polymorphism-input.ffg │ │ ├── solve-unused-impredicative-polymorphism-output.ffg │ │ ├── solve-unused-impredicative-polymorphism-type.ffg │ │ ├── subtype-function-input.ffg │ │ ├── subtype-function-output.ffg │ │ ├── subtype-function-type.ffg │ │ ├── triple-field-input.ffg │ │ ├── triple-field-output.ffg │ │ ├── triple-field-type.ffg │ │ ├── triple-supertype-input.ffg │ │ ├── triple-supertype-output.ffg │ │ ├── triple-supertype-type.ffg │ │ ├── unbound-alternatives-variable-input.ffg │ │ ├── unbound-alternatives-variable-stderr.txt │ │ ├── unbound-fields-variable-input.ffg │ │ ├── unbound-fields-variable-stderr.txt │ │ ├── undo-elaboration-input.ffg │ │ ├── undo-elaboration-output.ffg │ │ ├── undo-elaboration-type.ffg │ │ ├── unify-json-input.ffg │ │ ├── unify-json-output.ffg │ │ ├── unify-json-type.ffg │ │ ├── unify-null-input.ffg │ │ ├── unify-null-output.ffg │ │ ├── unify-null-type.ffg │ │ ├── unify-unsolved-input.ffg │ │ ├── unify-unsolved-output.ffg │ │ ├── unify-unsolved-type.ffg │ │ ├── unused-impredicative-polymorphism-input.ffg │ │ ├── unused-impredicative-polymorphism-output.ffg │ │ ├── unused-impredicative-polymorphism-type.ffg │ │ ├── unused-polymorphism-input.ffg │ │ ├── unused-polymorphism-output.ffg │ │ ├── unused-polymorphism-type.ffg │ │ ├── use-equation-input.ffg │ │ ├── use-equation-output.ffg │ │ ├── use-equation-type.ffg │ │ ├── well-formed-input.ffg │ │ ├── well-formed-output.ffg │ │ ├── well-formed-type.ffg │ │ ├── yaml-input.ffg │ │ ├── yaml-output.ffg │ │ └── yaml-type.ffg │ ├── error/ │ │ ├── for-naked-input.ffg │ │ ├── for-naked-stderr.txt │ │ ├── parse/ │ │ │ ├── eof-input.ffg │ │ │ ├── eof-stderr.txt │ │ │ ├── incomplete-escape-input.ffg │ │ │ ├── incomplete-escape-stderr.txt │ │ │ ├── incomplete-interpolation-input.ffg │ │ │ ├── incomplete-interpolation-stderr.txt │ │ │ ├── incomplete-string-input.ffg │ │ │ ├── incomplete-string-stderr.txt │ │ │ ├── invalid-multiline-input.ffg │ │ │ ├── invalid-multiline-stderr.txt │ │ │ ├── unbalanced-bracket-input.ffg │ │ │ ├── unbalanced-bracket-stderr.txt │ │ │ ├── unrecognized-symbol-input.ffg │ │ │ └── unrecognized-symbol-stderr.txt │ │ ├── resolve/ │ │ │ ├── empty-environment-variable-input.ffg │ │ │ ├── empty-environment-variable-stderr.txt │ │ │ ├── environment-authority-input.ffg │ │ │ ├── environment-authority-stderr.txt │ │ │ ├── environment-leading-slash-input.ffg │ │ │ ├── environment-leading-slash-stderr.txt │ │ │ ├── environment-missing-input.ffg │ │ │ ├── environment-missing-stderr.txt │ │ │ ├── environment-variable-slash-input.ffg │ │ │ ├── environment-variable-slash-stderr.txt │ │ │ ├── file-authority-input.ffg │ │ │ ├── file-authority-stderr.txt │ │ │ ├── file-missing-path-input.ffg │ │ │ ├── file-missing-path-stderr.txt │ │ │ ├── host-not-found-input.ffg │ │ │ ├── host-not-found-stderr.txt │ │ │ ├── invalid-destination-host-input.ffg │ │ │ ├── invalid-destination-host-stderr.txt │ │ │ ├── invalid-utf8-input.ffg │ │ │ ├── invalid-utf8-stderr.txt │ │ │ ├── read-invalid-json-input.ffg │ │ │ ├── read-invalid-json-stderr.txt │ │ │ ├── remote-invalid-parse-input.ffg │ │ │ ├── remote-invalid-parse-stderr.txt │ │ │ ├── remote-referentially-insane-input.ffg │ │ │ └── remote-referentially-insane-stderr.txt │ │ └── type/ │ │ ├── alternatives-variable-input.ffg │ │ ├── alternatives-variable-stderr.txt │ │ ├── bad-type-annotation-input.ffg │ │ ├── bad-type-annotation-stderr.txt │ │ ├── destructure-missing-required-input.ffg │ │ ├── destructure-missing-required-stderr.txt │ │ ├── dynamic-scope-input.ffg │ │ ├── dynamic-scope-stderr.txt │ │ ├── fields-variable-mismatch-input.ffg │ │ ├── fields-variable-mismatch-stderr.txt │ │ ├── fold-missing-field-input.ffg │ │ ├── fold-missing-field-stderr.txt │ │ ├── fold-typo-field-input.ffg │ │ ├── fold-typo-field-stderr.txt │ │ ├── for-annotation-input.ffg │ │ ├── for-annotation-stderr.txt │ │ ├── for-mixed-input.ffg │ │ ├── for-mixed-stderr.txt │ │ ├── impredicative-instantiation-input.ffg │ │ ├── impredicative-instantiation-stderr.txt │ │ ├── impredicative-polymorphism-input.ffg │ │ ├── impredicative-polymorphism-output.ffg │ │ ├── impredicative-polymorphism-type.ffg │ │ ├── index-slice-input.ffg │ │ ├── index-slice-stderr.txt │ │ ├── invalid-argument-input.ffg │ │ ├── invalid-argument-stderr.txt │ │ ├── invalid-handler-input.ffg │ │ ├── invalid-handler-stderr.txt │ │ ├── invalid-plus-annotation-input.ffg │ │ ├── invalid-plus-annotation-stderr.txt │ │ ├── invalid-plus-operands-input.ffg │ │ ├── invalid-plus-operands-stderr.txt │ │ ├── invalid-times-annotation-input.ffg │ │ ├── invalid-times-annotation-stderr.txt │ │ ├── invalid-times-operands-input.ffg │ │ ├── invalid-times-operands-stderr.txt │ │ ├── merge-wrong-type-input.ffg │ │ ├── merge-wrong-type-stderr.txt │ │ ├── missing-required-field-input.ffg │ │ ├── missing-required-field-stderr.txt │ │ ├── modulus-abstract-input.ffg │ │ ├── modulus-abstract-stderr.txt │ │ ├── modulus-zero-input.ffg │ │ ├── modulus-zero-stderr.txt │ │ ├── non-singular-pattern-input.ffg │ │ ├── non-singular-pattern-stderr.txt │ │ ├── not-a-function-input.ffg │ │ ├── not-a-function-stderr.txt │ │ ├── occurs-alternatives-input.ffg │ │ ├── occurs-alternatives-stderr.txt │ │ ├── occurs-type-backwards-input.ffg │ │ ├── occurs-type-backwards-stderr.txt │ │ ├── occurs-type-input.ffg │ │ ├── occurs-type-stderr.txt │ │ ├── pattern-input.ffg │ │ ├── pattern-stderr.txt │ │ ├── pin-fields-variable-input.ffg │ │ ├── pin-fields-variable-stderr.txt │ │ ├── read-fail-input.ffg │ │ ├── read-fail-stderr.txt │ │ ├── read-input.ffg │ │ ├── read-stderr.txt │ │ ├── show-key-input.ffg │ │ ├── show-key-stderr.txt │ │ ├── subtype-function-input.ffg │ │ ├── subtype-function-stderr.txt │ │ ├── type-mismatch-input.ffg │ │ ├── type-mismatch-stderr.txt │ │ ├── unbound-input.ffg │ │ ├── unbound-stderr.txt │ │ ├── unbound-type-input.ffg │ │ ├── unbound-type-stderr.txt │ │ ├── union-mismatch-both-extra-input.ffg │ │ ├── union-mismatch-both-extra-stderr.txt │ │ ├── union-mismatch-left-extra-input.ffg │ │ ├── union-mismatch-left-extra-stderr.txt │ │ ├── union-mismatch-right-extra-input.ffg │ │ ├── union-mismatch-right-extra-output.ffg │ │ ├── union-mismatch-right-extra-type.ffg │ │ ├── union-variable-mismatch-input.ffg │ │ ├── union-variable-mismatch-stderr.txt │ │ ├── variable-mismatch-input.ffg │ │ └── variable-mismatch-stderr.txt │ ├── json/ │ │ ├── colors-input.ffg │ │ ├── colors-output.ffg │ │ ├── colors-type.ffg │ │ ├── colors.json │ │ ├── geoip-input.ffg │ │ ├── geoip-output.ffg │ │ ├── geoip-type.ffg │ │ ├── geoip.json │ │ ├── glossary-input.ffg │ │ ├── glossary-output.ffg │ │ ├── glossary-type.ffg │ │ ├── glossary.json │ │ ├── markers-input.ffg │ │ ├── markers-output.ffg │ │ ├── markers-type.ffg │ │ ├── markers.json │ │ ├── menu-input.ffg │ │ ├── menu-output.ffg │ │ ├── menu-type.ffg │ │ ├── menu.json │ │ ├── menu2-input.ffg │ │ ├── menu2-output.ffg │ │ ├── menu2-type.ffg │ │ ├── menu2.json │ │ ├── numbers-input.ffg │ │ ├── numbers-output.ffg │ │ ├── numbers-type.ffg │ │ ├── numbers.json │ │ ├── people-input.ffg │ │ ├── people-output.ffg │ │ ├── people-type.ffg │ │ ├── people.json │ │ ├── products-input.ffg │ │ ├── products-output.ffg │ │ ├── products-type.ffg │ │ ├── products.json │ │ ├── recipes-input.ffg │ │ ├── recipes-output.ffg │ │ ├── recipes-type.ffg │ │ ├── recipes.json │ │ ├── server-input.ffg │ │ ├── server-output.ffg │ │ ├── server-type.ffg │ │ ├── server.json │ │ ├── twitter-input.ffg │ │ ├── twitter-output.ffg │ │ ├── twitter-type.ffg │ │ ├── twitter.json │ │ ├── widget-input.ffg │ │ ├── widget-output.ffg │ │ ├── widget-type.ffg │ │ ├── widget.json │ │ ├── youtube-input.ffg │ │ ├── youtube-output.ffg │ │ ├── youtube-type.ffg │ │ └── youtube.json │ ├── true.ffg │ └── unit/ │ ├── add-integer-input.ffg │ ├── add-integer-output.ffg │ ├── add-integer-type.ffg │ ├── alternative-input.ffg │ ├── alternative-output.ffg │ ├── alternative-type.ffg │ ├── and-input.ffg │ ├── and-output.ffg │ ├── and-type.ffg │ ├── append-list-input.ffg │ ├── append-list-output.ffg │ ├── append-list-type.ffg │ ├── append-text-input.ffg │ ├── append-text-output.ffg │ ├── append-text-type.ffg │ ├── application-input.ffg │ ├── application-output.ffg │ ├── application-type.ffg │ ├── bool-input.ffg │ ├── bool-output.ffg │ ├── bool-type.ffg │ ├── default-argument-input.ffg │ ├── default-argument-output.ffg │ ├── default-argument-type.ffg │ ├── default-record-argument-input.ffg │ ├── default-record-argument-output.ffg │ ├── default-record-argument-type.ffg │ ├── destructure-lambda-input.ffg │ ├── destructure-lambda-output.ffg │ ├── destructure-lambda-type.ffg │ ├── destructure-let-argument-input.ffg │ ├── destructure-let-argument-output.ffg │ ├── destructure-let-argument-type.ffg │ ├── destructure-record-input.ffg │ ├── destructure-record-output.ffg │ ├── destructure-record-type.ffg │ ├── divide-input.ffg │ ├── divide-output.ffg │ ├── divide-type.ffg │ ├── equal-input.ffg │ ├── equal-output.ffg │ ├── equal-type.ffg │ ├── export-show-input.ffg │ ├── export-show-output.ffg │ ├── export-show-type.ffg │ ├── field-input.ffg │ ├── field-output.ffg │ ├── field-type.ffg │ ├── fields-input.ffg │ ├── fields-output.ffg │ ├── fields-type.ffg │ ├── for-list-input.ffg │ ├── for-list-output.ffg │ ├── for-list-type.ffg │ ├── for-optional-input.ffg │ ├── for-optional-output.ffg │ ├── for-optional-type.ffg │ ├── greater-than-input.ffg │ ├── greater-than-or-equal-input.ffg │ ├── greater-than-or-equal-output.ffg │ ├── greater-than-or-equal-type.ffg │ ├── greater-than-output.ffg │ ├── greater-than-type.ffg │ ├── if-input.ffg │ ├── if-output.ffg │ ├── if-type.ffg │ ├── import-input.ffg │ ├── import-output.ffg │ ├── import-type.ffg │ ├── index-input.ffg │ ├── index-output.ffg │ ├── index-type.ffg │ ├── inequality-input.ffg │ ├── inequality-output.ffg │ ├── inequality-type.ffg │ ├── integer-abs-input.ffg │ ├── integer-abs-output.ffg │ ├── integer-abs-type.ffg │ ├── integer-input.ffg │ ├── integer-output.ffg │ ├── integer-type.ffg │ ├── interpolation-input.ffg │ ├── interpolation-output.ffg │ ├── interpolation-type.ffg │ ├── json-input.ffg │ ├── json-output.ffg │ ├── json-subtype-input.ffg │ ├── json-subtype-output.ffg │ ├── json-subtype-type.ffg │ ├── json-type.ffg │ ├── key-input.ffg │ ├── key-output.ffg │ ├── key-type.ffg │ ├── lambda-annotation-input.ffg │ ├── lambda-annotation-output.ffg │ ├── lambda-annotation-type.ffg │ ├── lambda-input.ffg │ ├── lambda-output.ffg │ ├── lambda-type.ffg │ ├── less-than-input.ffg │ ├── less-than-or-equal-input.ffg │ ├── less-than-or-equal-output.ffg │ ├── less-than-or-equal-type.ffg │ ├── less-than-output.ffg │ ├── less-than-type.ffg │ ├── let-default-input.ffg │ ├── let-default-output.ffg │ ├── let-default-type.ffg │ ├── let-function-input.ffg │ ├── let-function-output.ffg │ ├── let-function-type.ffg │ ├── let-input.ffg │ ├── let-output.ffg │ ├── let-type.ffg │ ├── list-fold-input.ffg │ ├── list-fold-output.ffg │ ├── list-fold-type.ffg │ ├── list-indexed-input.ffg │ ├── list-indexed-output.ffg │ ├── list-indexed-type.ffg │ ├── list-input.ffg │ ├── list-length-input.ffg │ ├── list-length-output.ffg │ ├── list-length-type.ffg │ ├── list-map-input.ffg │ ├── list-map-output.ffg │ ├── list-map-type.ffg │ ├── list-output.ffg │ ├── list-type.ffg │ ├── merge-bool-input.ffg │ ├── merge-bool-output.ffg │ ├── merge-bool-type.ffg │ ├── merge-evaluation-input.ffg │ ├── merge-evaluation-output.ffg │ ├── merge-evaluation-type.ffg │ ├── merge-input.ffg │ ├── merge-optional-input.ffg │ ├── merge-optional-output.ffg │ ├── merge-optional-type.ffg │ ├── merge-output.ffg │ ├── merge-type.ffg │ ├── minus-input.ffg │ ├── minus-output.ffg │ ├── minus-type.ffg │ ├── missing-field-input.ffg │ ├── missing-field-output.ffg │ ├── missing-field-type.ffg │ ├── missing-optional-field-input.ffg │ ├── missing-optional-field-output.ffg │ ├── missing-optional-field-type.ffg │ ├── modulus-input.ffg │ ├── modulus-output.ffg │ ├── modulus-type.ffg │ ├── multi-lambda-input.ffg │ ├── multi-lambda-output.ffg │ ├── multi-lambda-type.ffg │ ├── multiline-input.ffg │ ├── multiline-output.ffg │ ├── multiline-type.ffg │ ├── multiple-path-components-input.ffg │ ├── multiple-path-components-output.ffg │ ├── multiple-path-components-type.ffg │ ├── natural-fold-input.ffg │ ├── natural-fold-output.ffg │ ├── natural-fold-type.ffg │ ├── natural-input.ffg │ ├── natural-output.ffg │ ├── natural-type.ffg │ ├── not-equal-input.ffg │ ├── not-equal-output.ffg │ ├── not-equal-type.ffg │ ├── null-input.ffg │ ├── null-output.ffg │ ├── null-type.ffg │ ├── or-input.ffg │ ├── or-output.ffg │ ├── or-type.ffg │ ├── pattern-input.ffg │ ├── pattern-output.ffg │ ├── pattern-type.ffg │ ├── plus-input.ffg │ ├── plus-output.ffg │ ├── plus-type.ffg │ ├── positive-integer-input.ffg │ ├── positive-integer-output.ffg │ ├── positive-integer-type.ffg │ ├── pun-input.ffg │ ├── pun-output.ffg │ ├── pun-type.ffg │ ├── quoted-label-input.ffg │ ├── quoted-label-output.ffg │ ├── quoted-label-type.ffg │ ├── read-input.ffg │ ├── read-output.ffg │ ├── read-type.ffg │ ├── real-dot-zero-input.ffg │ ├── real-dot-zero-output.ffg │ ├── real-dot-zero-type.ffg │ ├── real-input.ffg │ ├── real-output.ffg │ ├── real-type.ffg │ ├── record-desugar-input.ffg │ ├── record-desugar-output.ffg │ ├── record-desugar-type.ffg │ ├── record-input.ffg │ ├── record-output.ffg │ ├── record-type.ffg │ ├── remote-import-input.ffg │ ├── remote-import-output.ffg │ ├── remote-import-type.ffg │ ├── reveal-input.ffg │ ├── reveal-output.ffg │ ├── reveal-type.ffg │ ├── show-input.ffg │ ├── show-output.ffg │ ├── show-type.ffg │ ├── slice-input.ffg │ ├── slice-output.ffg │ ├── slice-type.ffg │ ├── string-labels-input.ffg │ ├── string-labels-output.ffg │ ├── string-labels-type.ffg │ ├── text-escaped-input.ffg │ ├── text-escaped-output.ffg │ ├── text-escaped-type.ffg │ ├── text-input.ffg │ ├── text-output.ffg │ ├── text-type.ffg │ ├── times-input.ffg │ ├── times-output.ffg │ ├── times-type.ffg │ ├── union-input.ffg │ ├── union-output.ffg │ ├── union-type.ffg │ ├── visible-row-quantification-input.ffg │ ├── visible-row-quantification-output.ffg │ ├── visible-row-quantification-type.ffg │ ├── visible-variant-quantification-input.ffg │ ├── visible-variant-quantification-output.ffg │ ├── visible-variant-quantification-type.ffg │ ├── yaml-input.ffg │ ├── yaml-output.ffg │ └── yaml-type.ffg ├── try-grace/ │ └── Main.hs └── website/ ├── css/ │ └── grace.css └── index.html