Comments (3)
Yeah, I think it's probably fine to generalize //
and /\
to work on types. I'd have to implement it to say for sure but if it works then I will put up a proposed change to the semantics
from dhall-lang.
Okay, so looking into this more closely I think this would work better if there were a new operator for this purpose. The reason why you don't want to overload the operator is that it complicates the semantics. For example, naively overloading the operator to work on both record values and record types behaves weirdly if you have a record value whose field is a record type, such as:
{ foo = { bar : Bool } } ∧ { foo = { baz : Text } }
If you define the semantics of ∧
to trivially recurse over the fields you run the risk of accidentally merging the wrong kind of values:
{ foo = { bar : Bool } } ∧ { foo = { baz : Text } }
-- Oops! It started by combining record values and not it's combinine record fields
= { foo = { bar : Bool } ∧ { baz : Text } }
= { foo = { bar : Bool, baz : Text } }
It's less confusing if it's a new operator name. The only non-trivial part is deciding what it should be named.
My suggestion is to name it //\\
(ASCII) / ⩓
(UTF8 U+2A53) and have it behave like the type-level analog of ∧
. I don't think we need a type-level analog of //
from dhall-lang.
Alright, I have a prototype of this in a branch here:
https://github.com/dhall-lang/dhall-haskell/compare/gabriel/combine_types
I will open up a proposal to update the standard soon to match that
from dhall-lang.
Related Issues (20)
- `with` record update syntax removes other record fields HOT 4
- ABNF grammar should list "as Bytes" import mode
- Should the ABNF grammar disallow shebangs inside expressions? HOT 1
- eta-reducing to merge HOT 4
- Builtins operators reference: Missing record projection HOT 2
- ABNF grammar should explicitly disallow keywords as identifiers? HOT 2
- ABNF grammar should include a mandatory whitespace after `import-hashed`? HOT 1
- Improvements and fixes in the standard documentation HOT 3
- Is this an incorrect test file: `dhall-lang/tests/import/success/unit/ImportRelativeToHomeB.dhall`? HOT 2
- Link to non existing tweet
- A minimalistic proposal for do-notation
- Thoughts on introducing a minimum amount of type inference in Dhall HOT 1
- Introduce Bytes/length and Text/length as built-ins? HOT 3
- Is there a security hole: malicious sha256-protected cached content? HOT 1
- Eta-equivalence in `assert`? HOT 13
- A type level equivalent of the `with` keyword HOT 11
- Convert assertions to Leibniz equality types HOT 3
- A minimalistic proposal for adding row and column polymorphism to Dhall HOT 2
- A proposal for a "lightweight Dhall implementations" standard
- Year, Month, and Date extraction from a Date HOT 6
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 dhall-lang.