Haskellで群論の代表的な代数的構造を学ぶための記事を書いた
当記事はGitBookで公開しています。
趣旨
Haskellの表現力を用いて、代数的構造の性質と満たすべき法則を示す。
範囲
半群とモノイドと群。
例
import Test.QuickCheck
-- 半群型クラス
class Semigroup a where
sappend :: a -> a -> a
-- 半群の満たすべき法則 ( 結合律 )
sgLaw :: (Semigroup a, Eq a) => a -> a -> a -> Bool
sgLaw x y z = (x `sappend` y) `sappend` z == x `sappend` (y `sappend` z)
-- 半群インスタンスの例
instance Semigroup Int where
sappend = (*)
-- Semigroup Intが半群であることのテスト
sgTest1 :: IO ()
sgTest1 = let sgLaw' = sgLaw :: Int -> Int -> Int -> Bool -- QuickCheckのために単相化
in quickCheck sgLaw'
本音
最近憂鬱だったので、3連休を有用なものにしたかった…のでざらっと書いてみた。
ちょっと働くの疲れたので誰か助けて。
皆アイシテルウウ。