8
나는 기본적으로 다른 데이터 유형에 대한 태그 역할을하는 유형이 있습니다는 포장 유형의 인스턴스를 "상속"
import Data.Word
data RijndaelField = RF Word8
내가 RijndaelField
이 가능한 간단한 방법으로 Bits
의 Word8
인스턴스를 "상속"할을 :
import Data.Bits
instance Bits RijndaelField where
RF a .&. RF b = RF $ a .&. b
RF a .|. RF b = RF $ a .|. b
RF a `xor` RF b = RF $ a `xor` b
complement (RF a) = RF $ complement a
shift (RF a) n = RF $ shift a n
rotate (RF a) n = RF $ rotate a n
bitSize (RF a) = bitSize a
isSigned (RF a) = isSigned a
testBit (RF a) n = testBit a n
bit n = RF $ bit n
popCount (RF a) = popCount a
RijndaelField
와 Word8
사이의 관계를 표현하는 짧은 방법이 있나요?
그게 바로 제가 찾던 내용입니다. 감사합니다. (모든 것에 대한 확장이 있습니다!) – Snowball
@Snowball Just about =) 이것은 모나드 변환기의 스택을 감쌀 때 특히 유용합니다. 컴파일러가'Monad','Functor','MonadTrans', MonadState MyState','Applicative' 등이 있습니다. 많은 보편적 인 코드를 생성하는 데 매우 편리합니다. – bheklilr