chore: Change file layout to match repository instead of gist
40
README.md
Normal file
|
@ -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)
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
|
@ -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.
|
38
yants.md
|
@ -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)
|