diff options
-rw-r--r-- | yants.md | 22 | ||||
-rw-r--r-- | z-yants-tests.nix (renamed from yants-tests.nix) | 0 |
2 files changed, 19 insertions, 3 deletions
diff --git a/yants.md b/yants.md index 6db2068255dc..e10e120f08b6 100644 --- a/yants.md +++ b/yants.md @@ -1,9 +1,21 @@ yants ===== -This is a tiny type-checker for data in Nix, written in Nix. It doesn't have all -the features I think it should have (yet), but it works and its types are -composable. +This is a tiny type-checker for data in Nix, written in Nix. + +Features: + +* Checking of primitive types (`int`, `string` etc.) +* Checking polymorphic types (`option`, `list`, `either`) +* Defining & checking struct/record types +* Defining & matching enum types +* Defining function signatures (including curried functions) +* Types are composable! `option string`! `list (either int (option float))`! + +Lacking: + +* Any kind of inference (Nix's reflection ability is not strong enough) +* Convenient syntax for attribute-set function signatures ## Primitives & simple polymorphism @@ -20,3 +32,7 @@ composable. ## Enums! ![enums](https://gist.githubusercontent.com/tazjin/ad6d48bc2416335acc5da4a197eb9ddc/raw/b435b5996a176a9e824c42da4713a1d30f261338/z-enums.png) + +## Functions! + +![functions](https://gist.githubusercontent.com/tazjin/ad6d48bc2416335acc5da4a197eb9ddc/raw/ccece1eb9a1cb3b1add1ba1a1f65df3adca64a8f/z-functions.png) diff --git a/yants-tests.nix b/z-yants-tests.nix index e089aab4670a..e089aab4670a 100644 --- a/yants-tests.nix +++ b/z-yants-tests.nix |