Comments (1)
I think we could at the least have the rule: when checking T ∋ S : e
, delete the annotation S
if it is equal to T
. This would fix this case - they are both ?
here.
Potentially we could relax "equal" to "consistent -- up to holes", but I'd need to think more about that. The two key questions are
- soundness: if
T ∋ S : e
withT ~ S
, do we also haveT ∋ e
. We haveT ∋ S : e
iffS ∋ e
andS ~ T
, so this reduces to whether consistent types always accept the same terms. My next point shows that this is not true, so any relaxation would have to be more subtle. - usability: will it always/usually be a good idea (whatever that means). e.g.
- How do consistent types act the same wrt smart holes for checking non-accepted terms:
Bool ∋ 1
fails, but? ∋ 1
succeeds. Removing the annotation fromBool ∋ ? : 1
would giveBool ∋ {? 1 ?}
-- nb: this mostly shows that this transformation is not sound. If we did something smarter we may not have this weird Ann-transforms-into-Hole issue. - Will we remove information a human may find useful
- Probably other concerns that slip my mind at the moment.
- How do consistent types act the same wrt smart holes for checking non-accepted terms:
from primer.
Related Issues (20)
- Are we building (should we build) dependencies with `-O2`
- More robust Wasm support
- When looking for matches for holes, prefer local bindings over top-level/in-scope module binding
- Future work on interpreter
- wasm: always build with `-O2`
- Property test failure (possibly Wasm-related?) HOT 1
- Primer language -> Wasm compiler HOT 1
- Compile Primer programs to Wasm
- Only run Wasm tests on merge queue or workflow dispatch HOT 2
- Use Buildkite artifacts to cache Wasm build artifacts HOT 1
- Benchmark results aren’t fetched from Cachix HOT 3
- `primer-service`: look into RFC 9457
- Duplication in interpreter implementation
- Hook interpreter up to API
- `tasty_two_interp_agree` property test failure HOT 3
- `tasty_redex_independent` property test failure
- `tasty_multiple_requests_accepted` property test failures HOT 1
- `RecordPair TyConName ValConName` does not serialize nicely in the OpenAPI API
- Interpreter can't reduce top-level definitions
- Investigate `weeder-nix`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from primer.