simple-units: Simple arithmetic with SI units using type-checked dimensional analysis.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Please see the README on GitHub at https://github.com/groscoe/simple-units#readme


[Skip to Readme]

Properties

Versions 1.0.0.0, 1.0.1.0, 1.0.1.1, 1.0.2, 1.0.2
Change log None available
Dependencies base (>=4.9 && <5), first-class-families (>=0.4 && <0.9) [details]
License MIT
Copyright 2019 Gustavo Roscoe
Author Gustavo Roscoe
Maintainer gustavo@gustavoroscoe.com
Category Numeric, Numerical
Home page https://github.com/groscoe/simple-units#readme
Bug tracker https://github.com/groscoe/simple-units/issues
Source repo head: git clone https://github.com/groscoe/simple-units
Uploaded by groscoe at 2021-02-27T17:14:50Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for simple-units-1.0.2

[back to package description]

simple-units

A Haskell library for simple arithmetic with SI units using type-checked dimensional analysis.

Haddock documentation

View on hackage.

Example

>>> let newton = kilogram .* meter ./ (second .* second)
>>> 23*newton
23.0 kg*m/s^2

>>> let g = 6.67408e-11 * newton .* (meter .* meter) ./ (kilogram .* kilogram)
>>> g -- gravitational constant
6.67408e-11 m^3/kg*s^2

>>> let gravity m1 m2 r = g .* (m1 * kilogram) .* (m2 * kilogram) ./ (r*meter .* r*meter)
>>> let earth_mass = 5.972e24 * kilogram
>>> let mars_mass = 6.417e23 * kilogram
>>> let earth_radius = 6371 * kilo meter
>>> let mars_radius = 3389.5 * kilo meter
>>> let weight_on_earth mass = gravity mass earth_mass earth_radius
>>> let weight_on_mars mass = gravity mass mars_mass mars_radius
>>> weight_on_earth (80 * kilogram)
785.5719790179963 kg*m/s^2

>>> weight_on_mars (80 * kilogram)
298.22370259533704 kg*m/s^2

>>> weight_on_mars 1 ./ weight_on_earth 1
0.3796261966575378 <adimensional>