|
00:34
lucasb left
13:52
lucasb joined
16:32
Ven`` joined
|
|||
| Ven`` | masak: I'm glad you like me sometimes :P | 16:35 | |
| I think we'll never need to generate unquotes. After all, we can just make an II"M"E (Immediately Invocated Macro Expression) and nest them if needs be. | 16:36 | ||
| and I think I'm starting to *like* that Alma's hygiene doesn't require unquotes all over the place | 16:38 | ||
| At least I still haven't found an issue with it. But I'm sure "no hygiene" is the reason CL doesn't want to do that. | |||
| Also I'm often wondering "will that even work", and, well, declaring the name isn't, but otherwise... | 16:40 | ||
|
17:07
Ven`` left
17:09
Ven`` joined
17:13
Ven`` left
17:17
lucasb left
18:21
lucasb joined
19:42
Ven`` joined
|
|||
| masak | :) | 21:08 | |
| Ven``: I'm curious; in CL, is there a programmatic way to generate a comma/unquote? | 21:10 | ||
| Ven`` | masak: no, not really: | 21:11 | |
| masak | I suspected not | ||
| Ven`` | * ,1 | ||
| debugger invoked [...]: Comma not inside a backquote. | |||
| masak | right | ||
| but I don't mean syntax | 21:12 | ||
| I mean a way to create a (quoted) piece of code with a comma in it | |||
| Ven`` | did you imply lisp has syntax? ..:) just joking | ||
| masak | like, if you wanted to build an unquote but for some reason can't type it out | ||
| Ven`` | er, I guess ``,,1 technically? | ||
| gives `,1 | |||
| no, I don't think so. ' is (quote), but I'm not sure about the rest | 21:14 | ||
| masak | I think I mean something that *isn't* a comma itself | ||
| like, ' means (quote ...) | |||
| ` means, um, (quasiquote ...) ? | |||
| does , expand into some list-y expression? | |||
| Ven`` | no, there's no (quasiquote)-like | 21:16 | |
| masak | (and secretly, I'm hoping the answer is "no, there isn't because it doesn't even make *sense*, because the comma makes a *hole* in the syntax, it isn't syntax in itself...") | ||
| Ven`` | probably because the semantics are very removed from everything else | ||
| masak | because the above | 21:17 | |
| Ven`` | yup | ||
| masak | maybe it makes sense to say that the comma is implicitly parameterized on/connected to its surrounding backtick | 21:22 | |
| Ven`` | which, tbh, is probably one of the things that have convinced me | 21:23 | |
| masak | interestingly, this mechanism is also the deciding characteristic of slangs -- although even so, quasiquotes are a bit special because they riff off of the language they are _in_, adding holes | 21:28 | |
| Ven`` | I guess | 21:33 | |
| rather they create a version of the language where everything is quoted, except for those holes | |||
| masak | hmmm -- I'll have to think about whether I think that's true for Perl 6/Alma | 21:34 | |
| well, obviously, we're in a quasiquote, so everything's quoted | |||
| but as you said yourself, we also have more/easier access to the surrounding unquoted scope | |||
| than does CL | |||
| Ven`` | I don't think that's important | 21:38 | |
| data vs code is | |||
| masak | well | ||
| in that case | |||
| Ven`` | 1 + 1 vs Q.Infix.new(Q.LitInt.new, Q.LitInt.new) | ||
| masak | a quasi language definitely produces data, not code | ||
| I think I see clearly what you mean now | |||
| Ven`` | :) | ||
| masak | and that's also a way to see why unquotes don't make sense out in the code language | 21:39 | |
| there's nothing to unquote from if we're not already quasiquoted | |||
| Ven`` | right, you can go from data to code, but nowhere outside from that | ||
| well, I should probably get some sleep | 21:42 | ||
| masak | code takes itself to seriously. you give it some stuff, and it actually _executes_ it. so gauche. | ||
| too* | |||
| Ven`` | very french | ||
| masak | anyway, sleep well | ||
| but it's also very French to be abstract, like data :) | 21:43 | ||
| Ven`` | I need to take a look at how far from reality my gist is | ||
| well, `macro {{{foo}}} {}` most probably is...:) | |||
| masak | that one should be fine | 21:45 | |
| Ven`` | oh? | ||
| masak | if we want, we can even make it exactly that | ||
| I've been thinking about whether to allow that kind of thing | |||
| Ven`` | I didn't realize. | ||
| masak | similarly `1 {{{op}}} 2` could be made to work, I think | ||
| we could put defaults aside from "term" in various places | 21:46 | ||
| it's mostly a question of how complicated we want to make the rule for that | |||
| this is the part that is not at all like Lisp :) because we actually have syntax, and grammatical categories | |||
| Ven`` | well the question was more about installing names to outside-of-the-macro | ||
| masak | oh, ok | 21:47 | |
| well | |||
| Ven`` | *especially a macro* | ||
| masak | there's now Q.Identifier (used mostly for naming things) and Q.Term.Identifier (used mostly for lookup) | ||
| the thing in `{{{foo}}}` would be the former | |||
| but if it's the latter, I don't think that's a big problem, because we can convert silently | |||
| Ven`` | ok, but how do you call it? `defsuccinct(my swap, ...)`? | 21:48 | |
| masak | oh, ok | ||
| I need to look a little bit at how Python does its annotations, and then decide how much of that we can use (given we have macros and Python doesn't) | 21:49 | ||
| but `@succinct macro swap(` is what I have in mind | |||
| Ven`` | yeah, annotations are a special case | ||
| I didn't really mean that | |||
| masak | that is, `@succinct` is the macro-macro here | ||
| Ven`` | those can cheart | 21:50 | |
| -r | |||
|
21:51
Ven`` left
|
|||