It’s basically just JSON that can generate itself !
You have inspired me.
I will make JSON with meta-programming
I will call it DyJSON, i.e. “Dynamic JSON” but pronounced “Die, Jason!”
It is JSON with meta-programming and the ability to call C functions from libraries
Example:
# This is a line comment# Put your function definitions up here
(concat str_a str_b: "concat""my-lib.so") # Import a function through a C ABI
(make-person first_name last_name email -> { # Define our own generative func"name": (concat (concat $first_name " ") $last_name),
"email": $email
})
# And then the JSON part which uses them
[
(make-person "Jenny""Craig""jenn.craig.420@hotmail.com"),
(make-person "Parson""Brown" null)
]
As you can see, it is also a LISP to some degree
Is there a need for this? A purpose? No. But some things simply should exist
Thank you for helping bring this language into existence
Nix is the next step in that evolution. It’s basically just JSON that can generate itself !
You have inspired me.
I will make JSON with meta-programming
I will call it DyJSON, i.e. “Dynamic JSON” but pronounced “Die, Jason!”
It is JSON with meta-programming and the ability to call C functions from libraries
Example:
# This is a line comment # Put your function definitions up here (concat str_a str_b: "concat" "my-lib.so") # Import a function through a C ABI (make-person first_name last_name email -> { # Define our own generative func "name": (concat (concat $first_name " ") $last_name), "email": $email }) # And then the JSON part which uses them [ (make-person "Jenny" "Craig" "jenn.craig.420@hotmail.com"), (make-person "Parson" "Brown" null) ]As you can see, it is also a LISP to some degree
Is there a need for this? A purpose? No. But some things simply should exist
Thank you for helping bring this language into existence
I think you’ve just invented Jsonnet, but with C integration.
https://jsonnet.org/
Here is the grammar:
<json> ::= <value> | <fn-def> <json> <value> ::= <object> | <array> | <string> | <number> | <bool> | <fn-def> | <fn-app> | "null" <object> ::= "{" [ <member> { "," <member> } ] "}" <member> ::= <string> ":" <value> <string> ::= "\"" { <char> } "\"" <char> ::= (ASCII other than "\"", "\\", 0-31, 127-159) | (Unicode other than ASCII) | ( "\\" ( "\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "u" <hex> <hex> <hex> <hex> ) <hex> ::= /A-Fa-f0-9/ <array> ::= "[" [ <value> { "," <value> } ] "]" <number> ::= <integer> [ <fraction> ] [ <exponent> ] <integer> ::= "0" | /[1-9]+/ | "-" <integer> <fractional> ::= "." /[0-9]+/ <exponent> ::= ("E" | "e") [ "-" | "+" ] /[0-9]+/ <bool> ::= "true" | "false" <fn-def> ::= "(" <ident> { <ident> } ("->" <value> | ":" <string> <string>) ")" <ident> ::= <startc> { <identc> } <startc> ::= /A-Za-z_/ or non-ASCII Unicode <identc> ::= <startc> | /[0-9-]/ <fn-app> ::= "(" <ident> { <value> } ")" <var> ::= "$" <ident>Sounds like Nix is a pathway to many abilities I consider to be unnatural.
Yeah, it really is. A plaintext document that generates an entire OS?
Is it possible to learn this power?
I had the same thought. At panel 3 it’s just oh that’s nix with commas.
Lazily-evaluated, too!