Haskellにおける`%`
CとかRustにおいて%
は剰余を意味するが,Haskellでは剰余を求めるのにmod
関数を使う.
で,Haskellでは%
は使われないかと言われるとそうではなく,これは分数を構成する関数となっている.この関数はbase 4.16.1.0の時点でData.Ratio
に含まれている.この関数はRatio a
型の値を返す.この型は数値演算に関する基本的な型クラスを実装している.
module Main ( main ) where import Data.Ratio main :: IO () main = do print $ 10 % 3 print $ (10 % 3) + (33 % 4) print $ (5 % 2) - (3 % 4) print $ (3 % 4) * (4 % 3) print $ (4 % 9) / (2 % 3)
%cabal run Up to date 10 % 3 139 % 12 7 % 4 1 % 1 2 % 3
ちなみに分母に0を指定すると例外が発生する.
%ghci GHCi, version 8.10.7: https://www.haskell.org/ghc/ :? for help Prelude> import Data.Ratio Prelude Data.Ratio> 1%0 *** Exception: Ratio has zero denominator