Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Also add a "core modules" section to the API reference #401

Open
masak opened this issue Oct 13, 2018 · 5 comments
Open

Also add a "core modules" section to the API reference #401

masak opened this issue Oct 13, 2018 · 5 comments

Comments

@masak
Copy link
Owner

masak commented Oct 13, 2018

Because, as soon as we have modules/imports, and as soon as we have some kind of language-extending pragmas, they're going to be in modules, modules that we'll want to describe.

I think there might be around syntax-extending 20 modules to describe among the issues.

@masak masak changed the title Also add a "core modules" to the API reference Also add a "core modules" section to the API reference Feb 7, 2019
@masak
Copy link
Owner Author

masak commented Feb 9, 2019

I had some time to spare today, so I put together a list. I kinda like the result.

I've also marked in bold the ones needed for #324. Seems like a good place to start.

Operators

Terms

Methods

Statements

Parameters

Destructuring

Spreads

  • syntax.spread
    • syntax.call.spread
    • syntax.array.spread
    • syntax.dict.spread

Functions

Arrays

Junctions (and each)

Loop control

Misc

@masak
Copy link
Owner Author

masak commented Feb 21, 2019

Oh, what the heck. Let's go all-out on this one.

The "cheating" referred to in #324 can be extended to all of the core modules in the list in this issue. Let's cheat everywhere in the short run.

This will have two advantages:

  1. 007 will (externally) have more of its true shape. We can write more idiomatic programs using the core modules. It's good early feedback.

  2. Even though it will increase technical debt considerably, it will also create a kind of "pressure" pushing us to do these modules natively, using pure 007.

@masak
Copy link
Owner Author

masak commented Mar 21, 2019

All of the above modules are fairly orthogonal (to the extent grammar-modifying modules ever are orthogonal), expect for syntax.stmt.modifier. Conceivably, you'd get "all" of the statement keywords as modifiers by importing this module. But "all" isn't well-defined in a language where the statement keywords form an open set! Uh-oh.

So, do we:

  • Only import the "core" ones? (Boring! And then I could never do next unless condition();.)

  • Only import the ones in scope at the time of the import? (So you'd better import syntax.stmt.modifier late, or else.)

  • Import all of them, somehow — maybe with a reliable syntax transform — kind of in analogy with Implement +=, *= and all the other assignment operators #152?

I feel the last one, if we can pull it off, is the nicest one. But it'd require some more design.

@masak
Copy link
Owner Author

masak commented Mar 31, 2019

Coming back to this issue, it's pretty clear there was a bit of a "pressure valve" being released here; the issue started out talking about just documenting all of our modules, but it's also helped along the way to bring into focus that 007 will have all these modules in the first place, and that much of the development focus will go into them.

#401 (comment) is a course correction, but I want to make it clear that it's (way) out of scope of the issue itself, which is still about documenting the modules. Work-wise, I'd say this can happen any time after the completion of #385.

Adding the "currently-blocked" label to indicate that we're still waiting for #385.

@masak
Copy link
Owner Author

masak commented Sep 8, 2019

I think there might be around syntax-extending 20 modules to describe among the issues.

48, at last count.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant