備忘録やめた

備忘録として使用していたけどやめた.このブログに載せてあるコードのライセンスは別途記載がない限りWTFPL OR NYSLです.

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