diff --git a/nt/primitives/bootstrap/parse/parse.nix b/nt/primitives/bootstrap/attrs.nix similarity index 100% rename from nt/primitives/bootstrap/parse/parse.nix rename to nt/primitives/bootstrap/attrs.nix diff --git a/nt/primitives/bootstrap/default.nix b/nt/primitives/bootstrap/default.nix index c721987..db5b681 100644 --- a/nt/primitives/bootstrap/default.nix +++ b/nt/primitives/bootstrap/default.nix @@ -11,7 +11,8 @@ let mapAttrs ; - # NOTE: bootstrap does the equivalent to mix's `include.public` option. + # NOTE: bootstrap can do the equivalent of mix's + # NOTE: `include.public` & `submods.public` options. bootstrap = extraInputs: target: let this = delegate target; inputs = {inherit this;} // extraInputs; @@ -30,15 +31,18 @@ let else target inputs; in this; + + submods = { + bootstrap = _: bootstrap; + # XXX: TODO: should I rename bootstrap.nix -> default.nix? + prim = ./prim/bootstrap.nix; + naive = ./naive/bootstrap.nix; + }; in bootstrap {} [ - ./nt.nix - { - bootstrap = _: bootstrap; - std = ./std/bootstrap.nix; - parse = ./parse/bootstrap.nix; + submods.prim + submods.naive + ./attrs.nix - maybe = ./maybe.nix; - terminal = ./terminal.nix; - } + submods ] diff --git a/nt/primitives/bootstrap/parse/bootstrap.nix b/nt/primitives/bootstrap/naive/bootstrap.nix similarity index 71% rename from nt/primitives/bootstrap/parse/bootstrap.nix rename to nt/primitives/bootstrap/naive/bootstrap.nix index 9e6207b..7b5f475 100644 --- a/nt/primitives/bootstrap/parse/bootstrap.nix +++ b/nt/primitives/bootstrap/naive/bootstrap.nix @@ -2,6 +2,8 @@ # WARNING: this file is strictly for bootstrapping nt {this, ...} @ inputs: this.bootstrap inputs [ - ./parse.nix - ./sig.nix + { + maybe = ./maybe.nix; + terminal = ./terminal.nix; + } ] diff --git a/nt/primitives/bootstrap/maybe.nix b/nt/primitives/bootstrap/naive/maybe.nix similarity index 100% rename from nt/primitives/bootstrap/maybe.nix rename to nt/primitives/bootstrap/naive/maybe.nix diff --git a/nt/primitives/bootstrap/terminal.nix b/nt/primitives/bootstrap/naive/terminal.nix similarity index 100% rename from nt/primitives/bootstrap/terminal.nix rename to nt/primitives/bootstrap/naive/terminal.nix diff --git a/nt/primitives/bootstrap/std/README.md b/nt/primitives/bootstrap/prim/README.md similarity index 100% rename from nt/primitives/bootstrap/std/README.md rename to nt/primitives/bootstrap/prim/README.md diff --git a/nt/primitives/bootstrap/std/attrs.nix b/nt/primitives/bootstrap/prim/attrs.nix similarity index 100% rename from nt/primitives/bootstrap/std/attrs.nix rename to nt/primitives/bootstrap/prim/attrs.nix diff --git a/nt/primitives/bootstrap/std/bootstrap.nix b/nt/primitives/bootstrap/prim/bootstrap.nix similarity index 100% rename from nt/primitives/bootstrap/std/bootstrap.nix rename to nt/primitives/bootstrap/prim/bootstrap.nix diff --git a/nt/primitives/bootstrap/std/fn.nix b/nt/primitives/bootstrap/prim/fn.nix similarity index 50% rename from nt/primitives/bootstrap/std/fn.nix rename to nt/primitives/bootstrap/prim/fn.nix index c84d845..2ac65e6 100644 --- a/nt/primitives/bootstrap/std/fn.nix +++ b/nt/primitives/bootstrap/prim/fn.nix @@ -1,7 +1,15 @@ {...}: { id = x: x; + + # syntactic sugar for curry flipping flip = f: a: b: f b a; + # syntactic sugar for recursive definitions + recdef = def: let + Self = def Self; + in + Self; + # not sure where else to put this... nullOr = f: x: if x != null diff --git a/nt/primitives/bootstrap/std/list.nix b/nt/primitives/bootstrap/prim/list.nix similarity index 100% rename from nt/primitives/bootstrap/std/list.nix rename to nt/primitives/bootstrap/prim/list.nix diff --git a/nt/primitives/bootstrap/std/num.nix b/nt/primitives/bootstrap/prim/num.nix similarity index 100% rename from nt/primitives/bootstrap/std/num.nix rename to nt/primitives/bootstrap/prim/num.nix diff --git a/nt/primitives/bootstrap/std/string.nix b/nt/primitives/bootstrap/prim/string.nix similarity index 100% rename from nt/primitives/bootstrap/std/string.nix rename to nt/primitives/bootstrap/prim/string.nix