this post was submitted on 16 Nov 2023
158 points (95.9% liked)

Programming

17663 readers
311 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 13 points 1 year ago (2 children)

This is a cool idea. There are other programming languages that have libraries that expose similar behavior. For instance, Rust has the uom crate, Haskell has the units package, and C++ has the header only library SI.

But there is something to be said about it being built in.

[–] [email protected] 5 points 1 year ago (1 children)

The web page says other libraries implement units whereas they implement dimensions. 1 cm and 1 inch has the same dimension, namely length, and you are able to add them together and get a correct result. seems nice. I don't know if it'll have any practical benefit but I like it.

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago)

I can't talk about the other libraries but the uom crate does the same thing.

The dimensions are encoded as a vector of generics, allowing you to get the correct unit even when dividing a distance by time for example.

It's quite the clever use of Rusts type system.

[–] [email protected] 1 points 1 year ago

For sure. It'd be nice to have the units in a separate namespace but at least Numbat won't let you override identifiers already defined in the system of measure. I use Pint on Python - I usually keep the units in an identifier named u so they can't get accidentally overridden. That means either using u.km for single units or u('g/cm^3') for composite units. It'd be great if the language could separate units e.g. as [km] or `` but getting a compact syntax to distinguish the units namespace without colliding with other language features would be tricky. I remember F# having a good syntax but didn't dive that deep since it's not used widely in my field.