Comments (3)
This is somewhat related to #73
from dhall-lang.
Yeah, this will likely be the case for the foreseeable future
The main reason why Dhall is designed this way is because Dhall is "completely functional" meaning that there is no logic programming component (whether at the type-level or otherwise) and therefore no unification. All automation in Dhall is based around functions, including type-level automation. This is why type abstraction and type application are explicit. If something is repetitive you use a function to reduce the repetition.
Dhall is also based on a "pure type system" which means that there is no syntactic distinction between term-level programming and type-level programming. This is why you use the notation to abstract and apply types and terms. This is also why you use the same let
notation to define type synonyms and you can also (more recently on master
) store types in records/unions. Because there isn't a strict separation between the term and type level there will never really be a separation of data and schema.
That does mean that it is less ergonomic in the small but it also means that it is far more straightforward to debug and errors are better localized because type inference is only done in the forward direction. It also makes the type-checking algorithm easier to explain and reason about because there is no subtyping relationship between polymorphic and monomorphic terms and the conversions between them are explicit instead of implicit.
from dhall-lang.
I will go ahead and close this, but feel free to reopen if there are additional questions
from dhall-lang.
Related Issues (20)
- 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
- Parsing errors location not helpful
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.