libera/#lisp - IRC Chatlog
Search
21:59:04
sm2n
though I'm not sure for how long the immutable top level has been around, which is probably more important
22:00:00
sm2n
the problem appears to be tied up specifically with how racket's macro system and modules system interact
22:06:10
sm2n
apparently, I don't understand all the details. But the basic idea is that racket is all about building towers of syntactic abstraction, i.e macros that write macros, and so a question is how to deal with scoping at macroexpansion time for compilation. Racket has a phased system here, where each layer of macros has it's own evaluation "phase", and hence has its own module imports and such. This module system design appears to have made it difficult to support
22:06:25
sm2n
here's the paper describing the original design: https://www.cs.utah.edu/plt/publications/macromod.pdf
22:07:35
sm2n
anyway module systems seem to be one of the hairiest areas of programming language design
22:08:09
mariari
There are some good theory around it, but yeah. For type systems modules require quite a bit of work
22:08:11
jcowan
SML modules are supposed to be The Best, though they don't deal with macros. Not thatt I understand them.
22:08:49
mariari
with dependent types or the approach 1ML takes (or even fx91!) you can get them to be first class
22:08:52
sm2n
yeah, and there's apparently recent work in implementing modules using dependent types
22:09:43
mariari
there is quite a bit of that, the ML type system is too limiting, with a better type system a lot of work has been fertile ground for research
22:10:31
sm2n
iirc moscow ML had regions and then found out they weren't as good as normal GC and ended up throwing it out
22:11:03
mariari
part of the issue is the ML type system isn't good enough to track them properly, it's why effect languages typically have them (see F*)
22:11:40
mariari
in the 90's I think there were a few more I'd have to see the timeline of languages again
22:15:03
mariari
dependently typed language in general can express refinements, it's just a matter of how natural is it, and what makes it easy to support. Those are the hard issues as far as I can tel
22:30:42
mariari
I believe this is the link http://okmij.org/ftp/Scheme/macros.html#syntax-rule-dark-corner
23:15:25
yottabyte
how can I use dolist to return early? apparently I can use return according to these docs: http://www.lispworks.com/documentation/HyperSpec/Body/m_dolist.htm, but they don't provide an example
23:20:39
moon-child
yottabyte: in particular, the body of 'dolist' is implicitly enclosed in a block named nil. return-from will exit the lexically closest block of the given name, yielding whatever value(s) you provide, and return is the same except that it assumed that the name is nil. So this is nothing really special about dolist, except that dolist happens to enclose its body in a block
23:23:35
moon-child
(although, we are presently arguing about arcana there, so despite admonitions to the contrary, perhaps not right at the moment)
23:24:30
yottabyte
reading this http://www.lispworks.com/documentation/HyperSpec/Body/s_block.htm#block was insightful
23:24:44
yottabyte
I didn't even know what an implicit block named nil really meant until I read that
1:56:11
pjb
yottabyte: the hyperspec is a transcription of the ANSI standard for CL (which hasn't changed since it was finished in 1994).
2:51:58
nirnam
alot of thing still be written in C89, I guess you can consider CL standard fairly modern
2:59:09
aeth
Unicode as the default char-code/code-char, UTF8 as the default format for reading/writing files/etc. (although something like UTF32 might be the actual internal string format), metaobject protocol, bordeaux-threads, cffi, gray streams, extensible sequences, package local nicknames, etc.
2:59:31
aeth
Most of the latter stuff have trivial wrapper libraries or are the names of such libraries (e.g. closer-mop for the MOP)
3:03:38
aeth
That's most of them, but note that it doesn't include unicode because there is no such library for that, unfortunately.