KtorZ
2cb2c7fa1f
Add dedicated 'Pair' typed and untyped expression
...
Before this commit, we would parse 'Pair' as a user-defined
data-types, and thus piggybacking on that whole record system. While
perhaps handy for some things, it's also semantically wrong and
induces a lot more complexity in codegen which now needs to
systematically distinguish every data-type access between pairs, and
others.
So it's better to have it as a separate expression, and handle it
similar to tuples (since it's fundamentally a 2-tuple with a special
serialization).
2024-05-04 14:04:12 -04:00
KtorZ
390bccd406
Fix blueprint validator test snapshot.
2024-05-04 14:04:12 -04:00
KtorZ
92a1da69d9
Add (possibly temporary) assertion on record access in codegen
2024-05-04 14:04:12 -04:00
KtorZ
3dd94983bd
Revert "fixing more pair issues"
...
This reverts commit b76cc7436294cd73e7bbaf656c76a8f8b0ad56a9.
2024-05-04 14:04:12 -04:00
microproofs
46c7cb797a
fixing more pair issues
2024-05-04 14:04:12 -04:00
microproofs
ebe415cfc9
fix errors
2024-05-04 14:04:12 -04:00
KtorZ
5c59b816ea
Add parser for 'Pair' pattern
...
And a few more tests along the way for others. Note that it is important here that we try to parse for a 'Pair' BEFORE we try to parse for a constructor pattern. Because the latter would swallow any Pair pattern.
2024-05-04 14:04:12 -04:00
KtorZ
91a7e77ab4
Add 'Pair' pattern and rework internals to use it.
...
Currently, pattern-matching on 'Pair' is handled by treating Pair as a
record, which comes as slightly odd given that it isn't actually a
record and isn't user-defined. Thus now, every use of a record must
distinguish between Pairs and other kind of records -- which screams
for another variant constructor instead.
We cannot use `Tuple` either for this, because then we have no ways to
tell 2-tuples apart from pairs, which is the whole point here. So the
most sensical thing to do is to define a new pattern `Pair` which is
akin to tuples, but simpler since we know the number of elements and
it's always 2.
2024-05-04 14:04:12 -04:00
KtorZ
897b5d1d7e
Ensure type-aliases pretty-printing also work with Pair.
2024-05-04 14:04:12 -04:00
KtorZ
3020af7cd7
Revert 'unify' implementation back to its more elegant form
...
And add support for Pair.
2024-05-04 14:04:12 -04:00
KtorZ
cbf3ef2854
Add new Prelude alias: 'Map'
2024-05-04 14:04:12 -04:00
microproofs
d7574e738f
fix: remaining cargo tests
2024-05-04 14:04:12 -04:00
microproofs
999e408a28
fix some more tests
2024-05-04 14:04:12 -04:00
microproofs
7b5ad961e2
fix: found issue with record access on Pairs
2024-05-04 14:04:12 -04:00
microproofs
cb1ca84dad
fixing more tests
2024-05-04 14:04:12 -04:00
microproofs
30dd1f60e7
small simplification
2024-05-04 14:04:12 -04:00
microproofs
75b076552c
feat: Do a major overhaul on how we check types to allow for match patterns instead of if statements
...
Also fix one more test
2024-05-04 14:04:12 -04:00
microproofs
3c332ca42a
Few more places in codegen where we need to be able to deal with Pair records
2024-05-04 14:04:12 -04:00
microproofs
26f68c2fb4
fix: found various unify and type issues while running tests
2024-05-04 14:04:12 -04:00
microproofs
fd226be51f
add Pair type to prelude
2024-05-04 14:04:12 -04:00
microproofs
a8c8cf41cf
Finishing up codegen changes for pair
2024-05-04 14:04:12 -04:00
microproofs
963d275bb8
continue progress on pair adding
2024-05-04 14:04:12 -04:00
microproofs
21b60896f0
remove wild card match from tree functions
...
Start working on supporting Pair clauses
2024-05-04 14:04:12 -04:00
microproofs
f950ae7d3d
WIP: add new opcodes to Air and AirTree and update parts of codegen to handle the new pair type
2024-05-04 14:04:12 -04:00
microproofs
9e78f0fc2a
update for latest main
2024-05-04 14:04:12 -04:00
microproofs
61a021f9e3
update pair to handle alias
2024-05-04 14:04:12 -04:00
microproofs
d05d8e7de6
Start working on separating pairs from 2 tuples in Aiken
...
co-authored-by: KtorZ <matthias.benkort@gmail.com>
2024-05-04 14:04:12 -04:00
KtorZ
db8eb6a108
Provide more context for some panics
...
Actually ran into them both, will open issues about those in a bit.
2024-05-01 12:04:47 +02:00
KtorZ
925a11be69
Check for args length when comparing types. Duh!
...
Fixes #917 .
2024-05-01 10:48:15 +02:00
microproofs
945a3f743b
feat: builtin wrapper reduction optimization
2024-04-26 19:24:04 +02:00
Micah Kendall
ff4ddfbe1b
Simplifying PR per reviewers request
2024-04-12 21:40:27 -04:00
Micah Kendall
d39dbd6697
fmt
2024-04-12 21:40:27 -04:00
Micah Kendall
d25b8f91c7
feat: Emit keyword
2024-04-12 21:40:27 -04:00
rvcas
17ddbfaafa
chore: remove dbg
2024-04-08 14:30:07 -04:00
rvcas
5fc338a1eb
test: add some snapshot tests for export type
2024-04-08 14:30:07 -04:00
rvcas
5cb1e23008
fix: program generate should only run after params and args are validated
2024-04-08 14:30:07 -04:00
rvcas
cac119338d
feat(blueprint): a memoized program that only runs code gen every other time
2024-04-08 14:30:07 -04:00
rvcas
aa3896e92a
feat(export): allow trace levels to be controlled
2024-04-08 14:30:07 -04:00
rvcas
79ccc55499
feat(cli): print Export json to stdout
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-04-08 14:30:07 -04:00
rvcas
dac3308620
feat(Project::export): use Export::from_function and transpose
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-04-08 14:30:07 -04:00
rvcas
8ed930ac5a
feat: implement Export object based on blueprint
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-04-08 14:30:07 -04:00
rvcas
3cdb21ad6b
feat(blueprint): make a helper public
2024-04-08 14:30:07 -04:00
rvcas
a11b1fa56a
chore: cleanup validator creator method
2024-04-08 14:30:07 -04:00
rvcas
9322020a5e
feat(blueprint): re-export Error
2024-04-08 14:30:07 -04:00
rvcas
f50f7e42db
feat(project): create export type
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-04-08 14:30:07 -04:00
rvcas
9d49be46b8
chore: add some docs to the uplc crate
2024-04-08 14:30:07 -04:00
rvcas
033cc26313
fix: with_project no longer needs a seed
2024-04-08 14:30:07 -04:00
rvcas
1d462314c4
feat: use new generate_raw function
2024-04-08 14:30:07 -04:00
rvcas
7d67f1497c
feat(export): implement basic command functionality
2024-04-08 14:30:07 -04:00
rvcas
b63bd9b9e0
feat(cli): add empty export commands
2024-04-08 14:30:07 -04:00