何か実用的なプログラム
Haskell で何か実用的なプログラムを作ってみたいと思ったので、尿中の塩分とクレアチニン濃度から、一日の塩分摂取量を推定するプログラムを作ってみた。一日塩分摂取量計算プログラム
nacl (尿中Na濃度) (尿中クレアチニン濃度) (年齢) (体重) (身長) とコマンドプロンプトから入力すると、一日に摂取した食塩量の推定値を表示してくれる。
ファイル名: nacl.hs module Main where import System.Environment (getArgs) import System.Exit (exitFailure) import System.IO (hPutStrLn, stderr) main :: IO () main = do args <- getArgs if (length args /= 5) then do hPutStrLn stderr "Error: Arguments mismatch" exitFailure else print $ nacl' $ map (\x -> read x :: Double) args nacl' :: [Double] -> Double nacl' xs = nacl (xs !! 0) (xs !! 1) (xs !! 2) (xs !! 3) (xs !! 4) nacl :: Double -> Double -> Double -> Double -> Double -> Double nacl nas crs age weight height = na24 * 0.0585 where na24 = (21.98 * (nas / crs) * prUcr24) ** 0.392 prUcr24 = (-2.04) * age + 14.89 * weight + 16.14 * height - 2244.45
実行例
>ghc nacl.hs -o nacl.exe >nacl 100 212 57 58 158 2.2392397790846954
ロジックそのものよりエラー処理や、コマンドライン引数の受け取り方などの IO 周りの処理が面倒だった。どんなプログラム言語で書いても一緒なのだけれど。自分だけしか使わないのなら、interact を使ってフィルターにしてしまうのが一番簡単だ。