Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new conversion primitives #49

Closed
4 tasks done
Gabriella439 opened this issue May 7, 2017 · 1 comment
Closed
4 tasks done

Add new conversion primitives #49

Gabriella439 opened this issue May 7, 2017 · 1 comment

Comments

@Gabriella439
Copy link
Collaborator

Gabriella439 commented May 7, 2017

As mentioned in #47, we need the following new builtin functions in order to render numeric values:

  • Natural/show : Natural → Text
  • Integer/show : Integer → Text
  • Double/show : Double → Text
  • Natural/toInteger : Natural → Integer

The show functions should render in the exact same format that Dhall parses to source code. The purpose of the Natural/toInteger function is to help render Natural numbers without a leading + by converting them to Integers first

markus1189 added a commit that referenced this issue May 8, 2017
Gabriella439 pushed a commit that referenced this issue May 8, 2017
* Move test utils into separate module and use custom assertions

* Implement Natural/toInteger as primitive conversion

Relates to #49
markus1189 added a commit that referenced this issue May 8, 2017
markus1189 added a commit that referenced this issue May 9, 2017
markus1189 added a commit that referenced this issue May 9, 2017
Gabriella439 pushed a commit that referenced this issue May 9, 2017
* Implement Integer/show

Relates to #49

* Implement Double/show

Relates to #49
@Gabriella439
Copy link
Collaborator Author

All four conversion primitives are done now, so I'll mark this resolved

TristanCacqueray pushed a commit to TristanCacqueray/dhall-haskell that referenced this issue Jul 25, 2020
This ports the conversion script from Python to Haskell (fix dhall-lang#7)

The main reasons for this port are that:
- the Python script was really hard to maintain for reasons like 
  "converting from Swagger to Dhall is interleaved with string formatting"
- in Haskell we can use the dhall library to generate always syntactically 
  correct Dhall AST. It's also much easier to keep an eye on correctness, 
  because types and pattern matching. It also forces us to deal with things
  like cyclic imports from the get go.

Things happening here:
- remove the `api` folder, removing the difference between "raw api" and "nice api"
- move defaults from `default` to `defaults` folder, as it is in `dhall-nethack`
- transition to the new syntax for `Optional` (fix dhall-lang#49)
- add `types.dhall` and `defaults.dhall`, so that one can now easily "pin a version"
  by just importing these two records at a specific commit/tag. They also make it really
  easy to access objects, e.g.
  `let types = https://raw.githubusercontent... sha256:... in types.Deployment`
- also add typesUnion.dhall (fix dhall-lang#54), so one is able to send to Kubernetes different
  objects in the same stream. This is also documented in the README
- defaults are resolved recursively (fix dhall-lang#46): if there's an import of a "nullable" record,
  then it's not marked as Optional, making merging objects much easier
- default objects are not lambdas anymore, and instead they just don't include the required
  fields (that is, the ones that are not nullable records), as suggested in dhall-lang/dhall-lang#382
- for objects that are simple types we used to generate a simple lambda
  `\(a : Text) -> a` as a default, now we just don't generate a default (e.g. see
  `io.k8s.apimachinery.pkg.apis.meta.v1.Time`)
- autoformat all generated Dhall code
- remove cyclic imports (fix dhall-lang#47)
- update to dhall-1.22 and dhall-json-1.2.8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant