User avatar
Irenes (many) @ireneista@irenes.space
3w
but if we're going to take that route we want to know there's something better on the other side of it, that we can work towards. so we want to think through what the parameter-based CLI would be.

in particular, would it be

./evoke evoke.e inscribe ? or ./evoke inscribe evoke.e ? or would it be permissible to leave out the .e ?
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
and how would this relate to situations where we're not compiling anything and we want to use the parameters as something else, a list of files to pre-load or a list of stack operations to perform?
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
the usual non-Forth conventions for command-line parsing treat each word as potentially affecting the syntax of everything later on the line, but not before it. breaking with that would be a big deal and should only be done if it allows a different form of consistency that we find more important
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
a rule we could create is that filenames as CLI parameters are turned into string literals, while other types of word are executed as they're encountered. this would make ./evoke evoke.e inscribe work as-written. but, uh, is that.... good? lol
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
an alternate rule would be that the only words that can happen on the command line are words drawn from a specific closed vocabulary which provides special syntax support for being used that way. so there would be some sort of internal inscribe-from-command-line helper which gets called for this situation.

that would let
./evoke inscribe evoke.e work, at the cost of forbidding the user from doing ./evoke 2 3 + 9 * logfloor . or whatever
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
(of course * won't work in that context anyway because it's special to the shell, but let's imagine we have a user who doesn't mind working around that every time)
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
or, we could forgeo all these special rules and treat the command line parameters as just like any other execution context. then the invocation would be

./evoke 's" evoke.e"' inscribe

there's stuff to like about that approach
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
it does require the user to work around the shell's handling of quotation marks, but that may be worth it for consistency. after all, it's their shell, they can swap it if they want...
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
now, one more thing. imagine the someday-voice-control version of this UI. in that setting, we don't get to directly type punctuation marks, we have to say everything out loud as a word, which means we need a vocabulary of words and short phrases that deal with our syntactic constructs. it's highly important that it be a very small vocabulary, to make things easier for the speech-to-text engine and for the user; larger vocabularies lead to ambiguity problems.
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
so that last version of the invocation would become something like

"dot slash evoke string evoke dot e end string inscribe"
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
or if the user had "evoke" installed somewhere globally because they were very fond of using it this way, they could leave out that first "dot slash"
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
that's a little awkward, but probably acceptable. if anything, it's better than the typed shell version, as long as it's processed in a way that handles the quoting
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
it's really tempting, though, to think about what kinds of rules might allow the voice user to simply say

"dot slash evoke inscribe evoke"

leaving out the string delimiters and the dot-e
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
this form of it would require an approach similar to the thing we proposed above for the typed ./evoke inscribe evoke.e command, allowing the word "inscribe" to have special behavior attached to it that changes the meaning of following utterances.
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
we would very much want that to be somehow applying the same rules that are used for typed command lines
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
the same pressures apply, though, where we don't really want to have to have the acceptable words to use as parameters be such a tightly controlled vocabulary. we want to be able to use the whole language that way.
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
ah well. we had hoped writing this out would help us decide what we want, and perhaps it will, but we need to let the thoughts settle first. thanks for reading along :)
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
update: yeah okay we're doing the strings thing

it didn't come up above, but one reason we hadn't done that yet is that the transformation system and the other stuff used in outputting executable binaries isn't actually part of the
evoke binary by default. we could trivially add it, but it's nontrivial to remove things from the binary, so we were waiting to have a good reason to.

this is a good reason though :)
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
we're taking this opportunity to move the source files into some subdirectories now, as well, since there are three that we want...
1
0
0
0
User avatar
Irenes (many) @ireneista@irenes.space
3w
we suspect Evocation is already large enough that the lack of directory structure has been an obstacle to readers (please do weigh in if you worked on the code - as a couple of people have now)

it was fine when it was just us, because we have that in our head, but it should be "official"
2
0
1
0
3w
@ireneista it's not something we noticed but it would've definitely made it more coherent! we use all the metadata-aids we can when working on something so utterly foreign like Evocation is. so it would be good :)
1
0
2
0

User avatar
Irenes (many) @ireneista@irenes.space
3w
@mei makes sense. well, it's done now :)
0
0
0
0