Go to file
KtorZ 2d99c07dd3 Support (and default to) parenthesis for block expressions
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.
2023-01-14 11:49:45 -05:00
.github Try fixing acceptance step in CI. 2023-01-06 14:23:46 +01:00
crates Support (and default to) parenthesis for block expressions 2023-01-14 11:49:45 -05:00
examples chore: fmt acceptance test 40 2023-01-13 14:55:18 -05:00
.editorconfig rename examples/tests/{a,b,c,d,e,f} into examples/acceptance_tests/00{1,2,3,4,5,6} 2022-12-14 09:45:24 +01:00
.gitignore Define 'local' gitignore for examples' packages. 2023-01-06 13:30:56 +01:00
CHANGELOG.md feat(aiken-project): use rayon to run tests in parallel 2023-01-09 18:12:18 -05:00
CONTRIBUTING.md chore: clean some links up so they point to the new repo 2022-12-17 11:19:02 -05:00
Cargo.lock feat(aiken-project): use rayon to run tests in parallel 2023-01-09 18:12:18 -05:00
Cargo.toml fix: include return type in one function def 2022-10-04 16:32:32 -04:00
LICENSE Tweak LICENSE 2022-12-20 05:47:13 +01:00
README.md Align README's tagline with website. 2023-01-13 10:18:03 +01:00
bonnie.toml chore: retire mdbook 2022-12-15 14:17:36 -05:00

README.md

Aiken Aiken

A modern smart contract platform for Cardano

Licence Crates.io Rust Build


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.