Alex Vong <[email protected]> skribis: > First, I have withdrawn my proposal since I think it is not good enough. > Of course I will be exploring guix during summer, since it is a fun > thing to do. My original thought is to first port a working make-like > tool and then change it to output g-exps instead of actually performing > the build.
OK. >> I would suggest looking at the prototype Make replacement that Eelco >> Dolstra wrote as part of his PhD thesis on Nix: >> >> http://nixos.org/~eelco/pubs/phd-thesis.pdf (Chapter 10) >> > Thanks for the link to the paper. The paper mentioned nix expression. Is > that what g-exp based on? G-exps borrow from s-exps (obviously), client-side expression quoting in HOP¹ (~ and $ come right from there; HOP implements things using built-in compiler tricks whereas g-exps simply rely on macros, and of course HOP and g-exps both implement staging but with different constraints/goals), and string interpolation in Nix. > What are their name in the case of store-monad? (guix monads) provides ‘>>=’ and ‘return’. There’s additional syntactic sugar such as ‘mlet’, and helpers such as ‘lift’, ‘foldm’, ‘mapm’, etc. This is partly covered in: https://www.gnu.org/software/guix/manual/html_node/The-Store-Monad.html (Most of the section is not specific to ‘%store-monad’.) >> There’s also this defunct project about a Make replacement in Guile (not >> connected to Guix and Nix): >> >> http://home.gna.org/conjure/ >> > The homepage does not mention guile, is conjure written in guile? It’s written in Guile I think. Just mentioned it as a possible source of inspiration for the EDSLs or APIs it provides. > Finally, I suggest talking about the monad in the next Guix talks, > I "assert" people will love it! Heh, noted. :-) Thanks, Ludo’. ¹ http://hop.inria.fr
