@hackage science-constants-dimensional0.1.0.3

Mathematical/physical/chemical constants

Science.Constants.Dimensional is a variant of Science.Constants[1] package, with the only difference is that that the dimensional flavor provides (where applicable) dimensionally-typed constants. The Numeric.Units.Dimensional[2] wrappers allow to write type-safe formulas, for example all of this will successfully type-check:

~$ ghci -XNoImplicitPrelude
λ= import Numeric.Units.Dimensional.Prelude

λ= import Science.Constants.Dimensional

λ= massOfProton + massOfElectron

1.673532715291e-27 kg
λ= massOfProton / massOfElectron

1836.1526719486646

But this will not:

λ= massOfProton / massOfElectron + planckConstant

<interactive>:10:14:
    Couldn't match type `Numeric.NumType.Pos
                           (Numeric.NumType.Pos Numeric.NumType.Zero)'
                  with `Numeric.NumType.Zero'
1
https://hackage.haskell.org/package/science-constants
2
https://hackage.haskell.org/package/dimensional