bleeding: typesystem

This commit is contained in:
Emile Clark-Boman 2025-12-18 11:26:47 +10:00
parent 452dcf99bb
commit 3d9ec28bfc
6 changed files with 88 additions and 4 deletions

14
nib/enforce.nix Normal file
View file

@ -0,0 +1,14 @@
{nib, ...}: rec {
enfType = type: T:
assert (nib.isType type T
|| nib.panic.badType (nib.typeName type)); true;
enfSameType = T1: T2: enfType (nib.typeOf T1) T2;
enfAttrs = enfType (nib.typeOf {});
enfList = enfType (nib.typeOf []);
enfListOf = type: L:
assert (enfList L
&& builtins.all (T: nib.isType type T) L
|| nib.panic.badType "List ${nib.typeName type}" L); true;
}