!djTaTBQyWEPRQxrPTb:nixos.org

Nixpkgs Architecture Team

230 Members
https://github.com/nixpkgs-architecture, weekly public meetings on Wednesday 15:00-16:00 UTC at https://meet.jit.si/nixpkgs-architecture53 Servers

Load older messages


SenderMessageTime
2 Aug 2022
@qyliss:fairydust.spaceAlyssa RossBut execline does ;)14:04:33
@profpatsch:augsburg.oneprofpatschI guess scheme doesn’t have to compose either, but it’s easier to get right because you have proper scoping etc14:04:35
@profpatsch:augsburg.oneprofpatschqyliss: agreed14:04:43
@profpatsch:augsburg.oneprofpatschqyliss: In my experience execline is only good for simple tasks though, I wouldn’t want to convert the stdenv to plain execline, even generated execline.14:05:18
@qyliss:fairydust.spaceAlyssa RossMy point is that you can use Nix as a DSL to generate whatever you want, no homoiconicity required.14:05:19
@infinisil:matrix.orginfinisilI'd argue that then it's not using the same language anymore14:05:21
@infinisil:matrix.orginfinisilYeah it's a Nix DSL at that point, not Nix14:05:29
@qyliss:fairydust.spaceAlyssa RossThen you're missing the point by interpreting things too narrowly.14:05:44
@profpatsch:augsburg.oneprofpatschinfinisil: guix in the builder is different from guix at eval time14:05:57
@profpatsch:augsburg.oneprofpatschThe semantics are the important part, not the syntax14:06:03
@infinisil:matrix.orginfinisilIt is different?14:06:20
@profpatsch:augsburg.oneprofpatschThe cool thing is that you can re-use the semantics of stuff like “case” or “if”, but e.g. (read-file) has a totally different semantics if you use it at eval time14:06:40
@profpatsch:augsburg.oneprofpatschi.e. one would presumably read a file and copy it to the store returning a store path, the other would just read a file into the interpreter at build time14:07:49
@profpatsch:augsburg.oneprofpatsch(just a dumb example)14:08:01
@infinisil:matrix.orginfinisilAlright, so how about this: If we want to use the same syntax for eval and build time, we need homoiconicity. But for the same semantics (with a different syntax) we don't need homoiconicity14:08:21
@infinisil:matrix.orginfinisil Does that sound right Alyssa Ross ? 14:08:29
@profpatsch:augsburg.oneprofpatsch but if <bool> then <exp> else <exp> would behave the same in both settings 14:08:35
@profpatsch:augsburg.oneprofpatschinfinisil: yep, exactly14:08:56
@qyliss:fairydust.spaceAlyssa RossNo?14:08:58
@qyliss:fairydust.spaceAlyssa Rossthe syntax is nix syntax14:09:12
@qyliss:fairydust.spaceAlyssa Rossbut i think these semantics are entirely unimportant14:09:36
@profpatsch:augsburg.oneprofpatschI guess the problem is that it’s just not a very well defined term in the first place14:09:37
@infinisil:matrix.orginfinisil Anyways, it doesn't really matter, we can't switch to lisp, and we can't use Nix's if at build time unless a DSL is used 14:10:52
@infinisil:matrix.orginfinisil * Anyways, it doesn't really matter, we can't switch to lisp, and we can't use Nix's if (and other syntax) at build time unless a DSL is used 14:11:06
@infinisil:matrix.orginfinisilOr Nix gets extended with this capability14:11:40
@profpatsch:augsburg.oneprofpatschI’d compare it to e.g. opaleye, which is a Haskell DSL which has some nice static composition properties, and at the end it generates postgres SQL14:11:59
@profpatsch:augsburg.oneprofpatschif you want people to have “the nix everywhere” experience, you’d need something like that14:12:19
@profpatsch:augsburg.oneprofpatschWhether it generates bash, execline, or lisp at the end doesn’t really matter14:12:29
@profpatsch:augsburg.oneprofpatsch… Unless you want to debug it of course :)14:12:41
@infinisil:matrix.orginfinisilI think we don't want that14:13:43

Show newer messages


Back to Room ListRoom Version: 9