Commit Graph

1917 Commits

Author SHA1 Message Date
Kasey White abe29a3883 make progress on list deconstruction with IR 2022-12-05 14:18:44 -05:00
Kasey White 2a00b896fc create ir and start to replace plutus code gen with ir 2022-12-05 14:18:44 -05:00
Kasey White 6870a5cab7 fix minor scope issue 2022-12-05 14:18:44 -05:00
Kasey White e3267310c5 remove unListData 2022-12-05 14:18:44 -05:00
rvcas 84da69411d chore: fix test 2022-12-04 21:12:29 -05:00
rvcas f2c359f9d5 test(parser): add record creation tests 2022-12-04 21:12:29 -05:00
rvcas 85f839abe4 feat: support punning in record updates 2022-12-04 21:12:29 -05:00
rvcas 9ebc836b89 feat: handle punning in a non-ambiguous way 2022-12-04 21:12:29 -05:00
rvcas 391849bf37 feat: parser improvements
- record creation with punning
- disambiguate if condition from record creation with punning
- split parser tests up into many smaller ones
2022-12-04 21:12:29 -05:00
KtorZ 375499930a Add UPLC support for 'ProtoList' & 'ProtoPair' constants
Supersedes #35.

  The syntax for these elements isn't "set in stone"; in the sense that it is unspecified in [input-output-hk/plutus](https://github.com/input-output-hk/plutus). There's no visible plan from IOG to extend the Haskell parser to support this syntax, though there are samples of imagined syntax in the code. Thus, we can lead the way and simply choose a suitable syntax and let the Haskell implementation align to it later.

  This syntax is thus inspired from input-output-hk/plutus' samples, with only a small change: we use `<` and `>` for encapsulating type declaration instead of `(`, `)`. There are already enough parentheses in the UPLC syntax, adding more reduces visibility.

  Doing this, I've also added a lot more test cases for the UPLC parser. There could be more, but this is a good start.

  Here are some example programs (taken from test cases) utilizing this syntax:

  ```
  (program 0.0.0 (con list<bytestring> [#00, #01]))
  ```

  ```
  (program 0.0.0
      (con pair
        <integer, integer>
        [14, 42]
      )
  )
  ```

  ```
  (program 0.0.0
      (con pair<string, list<integer>> ["foo", [14, 42]])
  )
  ```

  _(Note that this was mainly done as an exercise to get more familiar with Rust and parts of Aiken.)_
2022-12-03 10:16:16 -05:00
rvcas 5ec93a8692 feat: format bytearrays 2022-12-01 15:28:15 -05:00
rvcas fedafed845 feat: add module constants 2022-12-01 15:28:15 -05:00
rvcas 34c8a58391 feat: complete language tour 2022-11-30 15:35:55 -05:00
rvcas 0823b78bf8 feat: some new features
- tuples `#(Int, Int)`
- `trace` and `trace("text")`
2022-11-28 22:33:53 -05:00
eyelash 6066e3176c move `to_string()` outside of the match 2022-11-28 17:30:45 -05:00
rvcas 2d5ed86a68
chore: some requested changes to comparsisons 2022-11-27 15:25:55 -05:00
Micah Kendall 919eebbd97 check clarification from rvcus 2022-11-26 10:33:06 -05:00
Micah Kendall 9b027f0051 Assert 2022-11-26 10:33:06 -05:00
Micah Kendall 58ee2c39a6 Check 2022-11-26 10:33:06 -05:00
Micah Kendall 45edc3e622 Tuples 2022-11-26 10:33:06 -05:00
Micah Kendall be4e489380 Type-aliases explanation 2022-11-26 10:33:06 -05:00
Micah Kendall 568192cc52 String explanations 2022-11-26 10:33:06 -05:00
Micah Kendall 8279c592df fix typo 2022-11-26 10:33:06 -05:00
Micah Kendall f8b967b5f1 Todo explanation with example 2022-11-26 10:33:06 -05:00
Micah Kendall 3fab7cde69 case->whereif 2 2022-11-26 10:33:06 -05:00
Micah Kendall a1a0465a3d +lines, -lines, +best practice avoid access by index 2022-11-26 10:33:06 -05:00
Micah Kendall 2ed0b1ed14 +overflow in ints 2022-11-26 10:33:06 -05:00
Micah Kendall 2479b94b67 More boolean examples, similar to gleam book. Also, explain correspondence to plutus primitives. 2022-11-26 10:33:06 -05:00
Micah Kendall 9b3c8e432e case->where-if in blocks.md 2022-11-26 10:33:06 -05:00
Micah Kendall 6eca7fc6ab added matching example, made block example about blocks returning values, not all blocks 2022-11-26 10:33:06 -05:00
vh-zuka 269cf8c13f fix: update aiken new 2022-11-26 10:30:41 -05:00
Micah Kendall 7dc5392a81 More docs 2022-11-25 01:44:03 -05:00
Micah Kendall 77e3b57ff0 basic docs 2022-11-25 01:44:03 -05:00
rvcas d5087dbcc7 fix: it's more consistent to have snakecase builtins 2022-11-24 18:36:22 -05:00
rvcas 67d160230b feat: new build command flag
- `uplc` to optionally dump raw uplc
2022-11-24 18:17:03 -05:00
Kasey White 1c3511b073 insert def should run after all sequences have run 2022-11-24 17:51:49 -05:00
Kasey White 6babebde28 feat: support self recursion functions and fix making constrs 2022-11-24 15:19:32 -05:00
rvcas 09e77e1918 feat: display named source 2022-11-24 11:38:43 -05:00
KtorZ 550f20c5e6 Fix deadlink in the book. 2022-11-24 10:10:32 -05:00
KtorZ fc66c2611b Implement a foundation for the aiken standard library for lists. 2022-11-24 10:10:32 -05:00
rvcas ba8855add9 fix: implicit discard in list patterns 2022-11-24 10:06:54 -05:00
rvcas a70ebb5c32 chore: format swap file 2022-11-23 21:09:06 -05:00
rvcas 27e0286d01 fix: most places should allow trailing comma 2022-11-23 21:09:06 -05:00
rvcas c07b9a1a81 feat: allow assignments to be cast to other types 2022-11-23 21:09:06 -05:00
rvcas 34d7a28351 feat: add check keyword and new assignment syntax 2022-11-23 21:09:06 -05:00
Kasey White 6687b9fe4c add forces to pair usage and fix clippy 2022-11-23 17:57:02 -05:00
Kasey White dc510b1c7a feat: finish list deconstruct 2022-11-23 17:57:02 -05:00
Kasey White e6f6d8a42d small edge case to fix and some ordering to go 2022-11-23 17:57:02 -05:00
Kasey White e496591ded checkpoint 2022-11-23 17:57:02 -05:00
rvcas 1de2640a48 feat: list patterns 2022-11-23 17:57:02 -05:00