diff --git a/README.md b/README.md new file mode 100644 index 000000000..55ea764d8 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +yants +===== + +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 & matching sum types +* Defining function signatures (including curried functions) +* Types are composable! `option string`! `list (either int (option float))`! +* Type errors also compose! + +Lacking: + +* Any kind of inference +* Convenient syntax for attribute-set function signatures + +## Primitives & simple polymorphism + +![simple](screenshots/simple.png) + +## Structs + +![structs](screenshots/structs.png) + +## Nested structs! + +![nested structs](screenshots/nested-structs.png) + +## Enums! + +![enums](screenshots/enums.png) + +## Functions! + +![functions](screenshots/functions.png) diff --git a/yants.nix b/default.nix similarity index 100% rename from yants.nix rename to default.nix diff --git a/z-enums.png b/screenshots/enums.png similarity index 100% rename from z-enums.png rename to screenshots/enums.png diff --git a/z-functions.png b/screenshots/functions.png similarity index 100% rename from z-functions.png rename to screenshots/functions.png diff --git a/z-nested-structs.png b/screenshots/nested-structs.png similarity index 100% rename from z-nested-structs.png rename to screenshots/nested-structs.png diff --git a/z-simple.png b/screenshots/simple.png similarity index 100% rename from z-simple.png rename to screenshots/simple.png diff --git a/z-structs.png b/screenshots/structs.png similarity index 100% rename from z-structs.png rename to screenshots/structs.png diff --git a/z-yants-tests.nix b/tests.nix similarity index 98% rename from z-yants-tests.nix rename to tests.nix index e1e521c5a..344f2c1f5 100644 --- a/z-yants-tests.nix +++ b/tests.nix @@ -1,5 +1,5 @@ with builtins; -with (import ./yants.nix {}); +with (import ./default.nix {}); # Note: Derivations are not included in the tests below as they cause # issues with deepSeq. diff --git a/yants.md b/yants.md deleted file mode 100644 index e10e120f0..000000000 --- a/yants.md +++ /dev/null @@ -1,38 +0,0 @@ -yants -===== - -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 - -![simple](https://gist.githubusercontent.com/tazjin/ad6d48bc2416335acc5da4a197eb9ddc/raw/d7b1fa0a511ae40f0831b369df4b97103441c7e5/z-simple.png) - -## Structs - -![structs](https://gist.githubusercontent.com/tazjin/ad6d48bc2416335acc5da4a197eb9ddc/raw/d7a7cff3639115538a5085561bedf11cb36d04e7/z-structs.png) - -## Nested structs! - -![nested structs](https://gist.githubusercontent.com/tazjin/ad6d48bc2416335acc5da4a197eb9ddc/raw/d7b1fa0a511ae40f0831b369df4b97103441c7e5/z-nested-structs.png) - -## 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)