!djTaTBQyWEPRQxrPTb:nixos.org

Nixpkgs Architecture Team

227 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
@infinisil:matrix.orginfinisilhomoiconicity is the keyword13:55:14
@profpatsch:augsburg.oneprofpatsch kevincox: Not to be too offtopic, but in fish I just have an alias like with foobar which puts foobar on PATH https://gist.github.com/Profpatsch/037e4f527e37ecfcf0b6e365b78b917d 13:56:43
@profpatsch:augsburg.oneprofpatsch And for using my own shell for nix-shell environments, direnv works like a charm 13:56:58
@infinisil:matrix.orginfinisilHmm, so as far as I can see, if we want something as nice as Guix, only needing a single language for both evaluation and building, we need a "homoiconic" language. The only somewhat popular class of languages that are homoiconic is lisps though, which I don't think is viable because it's lisp13:58:34
@profpatsch:augsburg.oneprofpatschinfinisil: fwiw the homowhatever stuff is just a fancy way of saying “macros”, and in my experience macros make code really hard to read & understand13:58:56
@infinisil:matrix.orginfinisil Also it would require switching away from bash and Nix 13:59:04
@profpatsch:augsburg.oneprofpatschas opposed to plain old functions13:59:08
@profpatsch:augsburg.oneprofpatschinfinisil: homoiconic just means that the syntax is the AST13:59:31
@infinisil:matrix.orginfinisil profpatsch: I don't think that's what matters 13:59:38
@profpatsch:augsburg.oneprofpatschwhich is only useful if you want macros13:59:43
@profpatsch:augsburg.oneprofpatschi.e. functions from code to code13:59:56
@qyliss:fairydust.spaceAlyssa RossWhy would we need macros?14:00:04
@qyliss:fairydust.spaceAlyssa RossLisp people are very fond of insisting everything needs macros, IME.14:00:18
@profpatsch:augsburg.oneprofpatschI don’t think you need them in a lazy language without compilation pass14:00:18
@infinisil:matrix.orginfinisilAs far as I understand, the nice thing about homoiconicity is that you can write a program straight to disk14:01:19
@infinisil:matrix.orginfinisilAnd then read and execute it14:01:26
@infinisil:matrix.orginfinisilAnd that's mostly transparent to the writer14:01:35
@infinisil:matrix.orginfinisilAt least that's what makes guix work the way it does14:01:50
@qyliss:fairydust.spaceAlyssa RossWhy would we need to do that though?14:02:02
@infinisil:matrix.orginfinisilI don't think that relates to macros14:02:09
@profpatsch:augsburg.oneprofpatschMy ideal stdenv would be written in R[6]RS scheme, with a potential layer of nix-that-gets-converted-to-sexps on top for end-users14:02:36
@infinisil:matrix.orginfinisil Alyssa Ross: If we wanted to have something like guix, only needing a single language for eval and build, then we need homoiconicity, or something like it, I'm pretty sure 14:02:52
@profpatsch:augsburg.oneprofpatsch(which gives you macros (i.e. codegen) by defition, just in a different way)14:02:55
@infinisil:matrix.orginfinisilI don't think we do want that14:02:56
@infinisil:matrix.orginfinisilBut it's the conclusion I'm trying to convey14:03:04
@qyliss:fairydust.spaceAlyssa RossNo we wouldn't14:03:42
@profpatsch:augsburg.oneprofpatsch The argumentation is a bit similar to the “I want dependent types because I can use my if on the typelevel” approach 14:03:46
@qyliss:fairydust.spaceAlyssa RossYou could build up a shell script from Nix functions if you wanted14:03:56
@profpatsch:augsburg.oneprofpatsch(for Guix)14:03:59
@profpatsch:augsburg.oneprofpatschqyliss: yeah, the big difference is that shell scripts don’t compose14:04:16

There are no newer messages yet.


Back to Room ListRoom Version: 9