-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 02/25/2010 04:38 PM, Ludovic Courtès wrote: >> Or you compile to some byte-code representation >> where variables point to closures in the heap that are overwritten by their >> normal forms when entered. I'm sort of leaning towards that approach >> (compile >> to Parrot or Guile or whatever). > > Of course, I’m somewhat biased as to which solution you should choose > ;-), but here’s how it could work with Guile: > > - There’d be a compiler front-end for the Nix language. It would > compile to the ‘Tree-IL’ language, which is roughly residual Scheme > code after macro expansion [0].
Now what is the benefit of not compiling into Scheme code for an actual compiler? > - The lexer and parser themselves can be translated from Flex/Bison to > SILex [1] and ‘parse-lalr’ [2]. Or just used as is in a shared library. Less changes - less bugs in transition to hunt. > - Since Tree-IL is call-by-value, parameters in a function call would > need to wrapped in a R5RS ‘delay’ form or rather a SRFI-45 ‘lazy’ > form [2]. If need be, promises can be made more efficient by adding > special VM support. Fortunately, that can be done in any Scheme and in many functional languages. > - Attribute sets could be implemented on top of Bagwell’s vlist-based > hash lists, a purely functional dictionary type [4]. Why not use whatever hashtable performs best? Obviously, Nix code will not be able > As a bonus Nix programs would be able to use other Guile libraries. > Imagine yourself writing a multi-threaded, Unicode-capable, GTK+ or Unicode-capable? Please make Unicode-capable version of Guile the default in Nixpkgs. (string-length "я") -> 2. Yes, guile_1_9 just fails on this test in a UTF-8 locale. mzscheme and ikarus handle this correctly - just in case anyone cares. Among Lisps sbcl, clisp and ecl also handle this as they should. > networking app in Nix! :-) Great. There goes reproducibility. I thought about adding new possibilities to Nix to enable loading shared libraries long ago, but never found a way to check that it will not add too much randomness into evaluation. Why would I want to write a GUI application in Nix?? -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJLhouJAAoJEE6tnN0aWvw3RQIH/Azk1gjCljBIgZiY7HBS7juv gFOaOhjoHLxWnAfLoAjUycBndkEUMBziDaPXwPQHlGydBVXVkEP/TxxOWzgl5Oly 4weT3fYB2LxRyhzi/i/tgRqzHGMUK1jmu9VhR8SkP9MhjiPrlRfcbcT5kYHeE+pB oRfy678D3lG58aGp7C0QGSjACmwJ/oM7059osEB05RdMOFObxCRjZoBl4kL2pt79 zPKIewQ4LsTxTry2DGerDE0rM7zxuIyoa4LcxuAIB3YfNqq3+3P9HTPkES/4T2ig QHp4nqEVmL5I57NpGmnLb6WvYrsKTmkFd0psHDd7ErWuDKZVU5zumvn7xMFVH0E= =qaeg -----END PGP SIGNATURE----- _______________________________________________ nix-dev mailing list [email protected] https://mail.cs.uu.nl/mailman/listinfo/nix-dev
