Embed timezone conversion into conversion-function framework #339
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a new implementation of the timezone conversion functionality on top of the conversion-function framework. Previously, we could convert
DateTime
s usingdt -> "Europe/Berlin"
, i.e. with a string on the right hand side. This required special handling in the type checker, the compiler and the Vm.With this change, we use conversion functions instead. This requires users to type
dt -> tz("Europe/Berlin")
, but is conceptually cleaner and does not require special handling in the compiler. Well it does require special handling in the FFI module for now, but only because we don't have anonymous functions / closures yet.I think this is still a benefitial change overall, as it makes the conversion operator conceptually simpler. It can either have a unit on the right hand side, or a conversion function.
We also introduce a new
local = tz(get_local_timezone())
function which is a bit simpler to type (dt -> local
) compared to the special "local" string before.Like before, users can still set aliases for timezones. For example: