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
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Structs
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Nested structs!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Enums!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Functions!
|
||||||
|
|
||||||
|

|
||||||
|
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 builtins;
|
||||||
with (import ./yants.nix {});
|
with (import ./default.nix {});
|
||||||
|
|
||||||
# Note: Derivations are not included in the tests below as they cause
|
# Note: Derivations are not included in the tests below as they cause
|
||||||
# issues with deepSeq.
|
# 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
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Structs
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Nested structs!
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Enums!
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Functions!
|
|
||||||
|
|
||||||

|
|
||||||