![]() This changes allow to use parenthesis `(` `)` to encapsulate expressions in addition to braces `{` `}` used to define blocks. The main use-case is for arithmetic and boolean expressions for which developers are used to using parenthesis. For example: ``` { 14 + 42 } * 1337 ``` can now be written as: ``` ( 14 + 42 ) * 1337 ``` This may sound straightforward at first but wasn't necessarily trivial in Aiken given that (a) everything is an expression, (b) whitespaces do not generally matter and (c) there's no symbol indicating the end of a 'statement' (because there's no statement). Thus, we have to properly disambiguate between: ``` let foo = bar(14 + 42) ``` and ``` let foo = bar (14 + 42) ``` Before this commit, the latter would be interpreted as a function call and would lead to a somewhat puzzling error. Now, the newline serves as a delimiting symbol. The trade-off being that for a function call, the left parenthesis has to be on the same line as the function name identifier -- which is a fair trade off. So this is still allowed: ``` let foo = bar( 14 + 42 ) ``` As there's very little ambiguity about it. This fixes #236 and would seemingly allow us to get rid of the leading `#` in front of tuples. |
||
---|---|---|
.github | ||
crates | ||
examples | ||
.editorconfig | ||
.gitignore | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
bonnie.toml |
README.md
QuickStart
Prerequisites
For now you'll need rust installed, see rustup.
Getting started
In case you have fresh installation of rustup
you might need to do:
rustup install stable
$ cargo install --git https://github.com/aiken-lang/aiken.git
$ aiken --help
How to use
For more information please see the user manual.
Roadmap
Aiken defines its roadmap using Github Milestones. The roadmap isn't set in stone, but gives a high-level overview of where the project is headed for.
Contributing
Want to contribute? See CONTRIBUTING.md to know how.
Note
The name comes from Howard Aiken, an American physicist and a pioneer in computing.