Data.UnitsOfMeasure
from 型で単位を表す
haskellでUnits of Measureをやる
https://hackage.haskell.org/package/uom-plugin-0.4.0.0/docs/Data-UnitsOfMeasure.html
tutorial
uom-plugin
https://github.com/adamgundry/uom-plugin
template haskellを用いて単位となる型を定義する
code:hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeOperators #-}
import Data.UnitsOfMeasure
import Data.UnitsOfMeasure.Convert
-- 単位の定義
u| m, s, km/h |
-- 速度の量を定義
speed :: Quantity Double u| km/h |
speed = u| 60 km/h |
-- 時間の量を定義
time :: Quantity Double u| s |
time = u| 3600 s | -- 1時間
-- 距離を計算
distance :: Quantity Double u| m |
distance = convert speed * time
main :: IO ()
main = print distance -- 60kmを表示するはず