小ネタ。 ビットパターンをHaskellでパターンマッチできたらいいよね、ということでview patternを使ってみた。 {-# LANGUAGE ViewPatterns #-} import Data.Bits -- | ビット。 I は 1, O は 0 data B = I | O deriving Show -- | 8ビット。 左がMSB, 右がLSB data Byte = B B B B B B B B B deriving Show bool2b :: Bool -> B bool2b True = I; bool2b False = O bit' :: Bits a => Int -> a -> B bit' i b = bool2b $ testBit b i -- | view patternで使う関数 bit8 :: Bits a => a -> Byte b