alma icon indicating copy to clipboard operation
alma copied to clipboard

ALgoloid with MAcros -- a language with Algol-family syntax where macros take center stage

Results 109 alma issues
Sort by recently updated
recently updated
newest added

Issue #302, that enormous discussion that hovers around fexprs and Kernel but sometimes veers out into the unknown and asks really deep and important questions about computation itself (and how...

Courtesy of @arnsholt. Slightly made-up but complete example: my employee = { name: "Frank", age: 44, role: "Senior Janitor", printName() { say(employee.name); }, printAge() { say(employee.age); }, printRole() { say(employee.role);...

macro idea

Re-reading [this old comment](https://github.com/masak/alma/issues/294#issuecomment-392330477) made something click for me. In short, access paths need to be a protocol. I don't think "protocol" has ever been defined clearly in the Alma...

So, I was thinking about this. I almost feel ready to open a PR about it. We're in a nice place with this one, because we already have several "waiting...

macro idea

Assuming a `.has` method on all containers that can do indexing, a `prefix:` macro would make it possible to write if exists container["foo"] { ... } rather than if container.has("foo")...

macro idea
new feature

Why modules and module imports? Because eventually we'll want to play around with macros that affect the parsing context that imported them. I have no reasonable basis for choosing either...

new feature

Whenever I need to go in and debug some scoping/lookup bug (as I am currently), I find myself injecting `say` statements in always the same places. Here's what I would...

currently-blocked

Just like a module file can have a `MAIN` function, it can also have one or more functions marked with an `is test` trait (or #257 a `@test` annotation). Presumably,...

macro idea

Just noticed that [this test](https://github.com/masak/alma/blob/ae49b69eac1d787452197ee904da4b3d97ceb2f9/t/features/custom/ops.t#L5-L15) doesn't test the right thing. ``` { my $program = q:to/./; func infix:(left, right) { return 20; } say(4 * 5); . outputs $program, "20\n",...

low-hanging fruit
good first issue

In case somebody sets us up it. I was surprised I apparently have no handling of the BOM in the parser — it's still something that could happen to unwary...