move enf msg arg to end

This commit is contained in:
Emile Clark-Boman 2026-01-25 00:11:24 +10:00
parent 7796800888
commit bf82113bf2
4 changed files with 11 additions and 11 deletions

View file

@ -38,7 +38,7 @@
else builder; else builder;
parseDecl = base: decl: parseDecl = base: decl:
assert enfType "parseDecl" "set" decl; assert enfType "set" decl "parseDecl";
# ^^^^ "Type declaration must be provided as an attribute set, got "${typeOf decl}" instead!" # ^^^^ "Type declaration must be provided as an attribute set, got "${typeOf decl}" instead!"
decl |> projectOnto base; decl |> projectOnto base;
@ -69,7 +69,7 @@
}; };
mkClass = sig: decl: mkClass = sig: decl:
assert enfIsClassSig "mkClass" sig; let assert enfIsClassSig sig "mkClass"; let
allDerivedClasses = allDerivedClasses =
decl.derive decl.derive
|> map (class: typeSig class ++ class.${ntTrapdoorKey}.derive); |> map (class: typeSig class ++ class.${ntTrapdoorKey}.derive);

View file

@ -12,25 +12,25 @@
isTypeSig isTypeSig
; ;
in rec { in rec {
enfType = msg: type: value: let enfType = type: value: msg: let
got = typeOf value; got = typeOf value;
in in
got == type || throw "${msg}: expected primitive nix type \"${type}\" but got \"${got}\""; got == type || throw "${msg}: expected primitive nix type \"${type}\" but got \"${got}\"";
# NOTE: doesn't check if xs is type set, use enfHasAttr instead # NOTE: doesn't check if xs is type set, use enfHasAttr instead
enfHasAttr' = msg: name: xs: enfHasAttr' = name: xs: msg:
hasAttr name xs || throw "${msg}: missing required attribute \"${name}\""; hasAttr name xs || throw "${msg}: missing required attribute \"${name}\"";
# NOTE: use enfHasAttr' if you can guarantee xs is type set # NOTE: use enfHasAttr' if you can guarantee xs is type set
enfHasAttr = msg: name: xs: enfHasAttr = name: xs: msg:
enfType "set" xs msg && enfHasAttr' name xs msg; enfType "set" xs msg && enfHasAttr' name xs msg;
enfIsClassSig = msg: sig: enfIsClassSig = sig: msg:
isClassSig sig || throw "${msg}: given value \"${toString sig}\" of primitive nix type \"${typeOf sig}\" is not a valid Typeclass signature"; isClassSig sig || throw "${msg}: given value \"${toString sig}\" of primitive nix type \"${typeOf sig}\" is not a valid Typeclass signature";
enfTypeSig = msg: sig: enfTypeSig = sig: msg:
isTypeSig sig || throw "${msg}: given value \"${toString sig}\" of primitive nix type \"${typeOf sig}\" is not a valid Type signature"; isTypeSig sig || throw "${msg}: given value \"${toString sig}\" of primitive nix type \"${typeOf sig}\" is not a valid Type signature";
enfIsNT = msg: T: enfIsNT = T: msg:
isNT T || throw "${msg}: expected nt compatible type but got \"${toString T}\" of primitive nix type \"${typeOf T}\""; isNT T || throw "${msg}: expected nt compatible type but got \"${toString T}\" of primitive nix type \"${typeOf T}\"";
} }

View file

@ -48,12 +48,12 @@ in rec {
impls' = type: T: elem (toTypeSig type) T.${ntTrapdoorKey}.derive; impls' = type: T: elem (toTypeSig type) T.${ntTrapdoorKey}.derive;
# NOTE safe variant, use impls' if you can guarantee `isNT T` holds # NOTE safe variant, use impls' if you can guarantee `isNT T` holds
impls = type: T: assert enfIsNT "nt.impls" T; impls' type T; impls = type: T: assert enfIsNT T "nt.impls"; impls' type T;
# check if a type/class implements a signature # check if a type/class implements a signature
# NOTE: unsafe variant, use `is` if you can't guarantee `isNT T` holds # NOTE: unsafe variant, use `is` if you can't guarantee `isNT T` holds
is' = type: T: T.${ntTrapdoorKey}.sig == toTypeSig type; is' = type: T: T.${ntTrapdoorKey}.sig == toTypeSig type;
# NOTE safe variant, use `is'` if you can guarantee `isNT T` holds # NOTE safe variant, use `is'` if you can guarantee `isNT T` holds
is = type: T: assert enfIsNT "nt.is" T; is' type T; is = type: T: assert enfIsNT T "nt.is"; is' type T;
} }

View file

@ -52,7 +52,7 @@ in rec {
typeSig' = T: T.${ntTrapdoorKey}.sig; typeSig' = T: T.${ntTrapdoorKey}.sig;
# NOTE: safe variant, use typeSig' if you can guarantee `isNT T` holds # NOTE: safe variant, use typeSig' if you can guarantee `isNT T` holds
typeSig = T: assert enfIsNT "nt.typeSig" T; typeSig' T; typeSig = T: assert enfIsNT T "nt.typeSig"; typeSig' T;
toTypeSig = x: toTypeSig = x:
if isString x if isString x