01:01 Ven` joined 01:06 Ven` left 04:19 Ven` joined 04:24 Ven` left 08:04 Ven` joined 11:34 Ven` left 11:51 Ven` joined 12:12 Ven` left 12:16 Ven` joined
masak I'm (slowly) writing a syntax highlighter for the 007 code in the documentation 12:17
I'm writing it in 007, which is a fun exercise
it scans the input twice (in the first step it finds the 007 code blocks, and in the second it does some kind of half-hearted tokenization) 12:18
I find myself wanting to write a version that scans the input once -- maybe I'll write out an implementation of that using a Perl 6 grammar, and then try to "port" it to a handwritten state machine in 007 12:19
or maybe a not-handwritten state machine in 007
Ven` where's your markdown parser at? :P 12:52
masak hehe, no no 13:01
just interested in parsing the 007 parts for syntax highlighting here 13:02
Ven` a declarative state machine does sound like an interesting idea for a macro
masak yes, eventually
related to that, I was mulling about whether there'd need to be like a "factory object" for building switch statements programmatically, or whether that could be easily-enough expressed through the Qtree API 13:03
Ven`
.oO( just let me put that idea in my proxy drawer )
masak er, I meant that #perl6 question to be here :) 13:05
Ven`: did you manage to catch github.com/masak/007/issues/410 ? :)
Ven`
.oO( just let me put that idea in my proxy drawer )
oops, backwards key doesn't work like I thought it did
masak oh, you read it
I might publish it as a blog post, but time for blogging has been scarce of late 13:06
is it, um, readable?
I never quite know these days
Ven` my end-of-studies test/presentation is this friday, so that's pretty much all I'm doing this week/did the past week
masak oh, I see
Ven` to give my opinion on it: that's something sweetjs had a bit of an issue with, only for readability sake though. It generated i.e. `var myvar123;` instead of `var myvar` for this exact reason, and sometimes that was a bit hard to read 13:10
but really, if I write `my foo;` in 007, there's no technical reason the runtime has to remember the name of the variable. It could be renamed "1"
masak yes, agreed
in fact, I'm not proposing we do any alpha-rewriting
Ven` (except debuggability, etc)
masak my current best-effort view of what a variable use *is*, data-structure-wise, is a tuple (a, b) where a is the number of scopes up and b is a slot index in the resulting outer scope 13:11
Ven` www.sweetjs.org/browser/editor.html# (just type in `var a = 1;` and compile for an example)
masak (the linked gist goes into detail about that tuple convention) 13:12
Ven` linked..?
masak yeah, I get a_4
linked from the issue
gist.github.com/masak/4c1807775f60...950f33dfd6
Ven` I somehow missed it. Found it now.
masak anyway, having to put numbers on the names of the variables is a problem that those who still cling to the textual/name nature of variables will run into, yes :) 13:13
the tuple nature kind of avoids that, and (as a nice side effect) it leads to making a language where variable names are not allowed to have any runtime footprint 13:14
Ven` disagrees with the term:reduce macro 13:15
at least the "parsed" block wouldn't look like that
masak listens
Ven` I mean, no, but: the way <infix> is captured is wrong 13:17
or: {{{op.identifier}}} is wrong
because that seems to sacrifice hygiene
masak mm
Ven` er, I suppose not "sacrifice" but it's a violation. we're looking it up by name
masak not really, but I see what you mean. it works under the *current* model of identifiers because identifiers are way overpowered 13:18
but, op.identifier should probably be refactored to be op.routine (either a func or a macro) -- since referring directly to the routine and not via an identifier is totally kosher, and one layer of indirection less 13:19
Ven` definitely
masak then we wouldn't even need the {{{ }}}
Ven` age-old...
nope, not entering this debate again 13:20
masak ;)
Ven` I should write that quasiquoter I've been meaning to for a while, that should be interesting 13:22
certainly for this issue looking at racket isn't going to prove *too* interesting, but looking at sweetjs might be 13:24
Ven` dislikes Perl 6 containers
masak today I've been mulling over how the Location API ought to interact with object properties, specifically something like Python's descriptors 13:26
it feels like there's a neat unification in there somewhere. basically, a descriptor is like a Location for an object property.
I know you don't like Perl 6 containers, but... I believe 007 Locations are slightly less bad :) 13:27
we could even forbid them for ever being exposed in runtime code, but I'm not sure I can be bothered -- maybe, if it turns out to have disastrous optimization losses not to 13:28
github.com/masak/007/issues/413
Ven` I think I've mentioned it already, but outside of the "co-op fatigue" (juggling between work and school), I've not felt like working on 007 for a while, because the goals are a bit too unclear for me. I thought the `is parsed` bit would be its end-all be-all, and now that it's clearly not, I'm feeling a bit... not sure. 13:35
(it's a bit unfair because I'm known to bikeshed *heavily* but I've not been feeling it that much recently) 13:37
13:52 Ven` left 13:53 Ven` joined 17:02 Ven` left
masak yes, I understand 20:06
for what it's worth, I still would like to come back and focus on `is parsed` in the not too distant future. many macros depend on it. 20:58
but I also think, realistically, that the current parser isn't going to be flexible enough to accommodate what we want out of `is parsed` 20:59
that's why I have a stalled PR for the simplest possible `is parsed` statement macro
21:17 tbrowder___ left 21:18 tbrowder___ joined