タグ付けされた質問 「deriving」

3
Haskellでの派生はどのように機能しますか?
Haskellの代数的データ型(ADT)は、それらから派生することにより、いくつかのタイプクラス(Show、などEq)のインスタンスになることができます。 data Maybe a = Nothing | Just a deriving (Eq, Ord) 私の質問は、これderivingがどのように機能するか、つまりHaskellが派生ADTの派生型クラスの関数を実装する方法をどのように知るかです。 また、なぜderiving特定の型クラスのみに制限されているのですか?派生可能な独自の型クラスを作成できないのはなぜですか?

3
ジッパーコモナド、一般的に
任意のコンテナタイプが与えられると、(要素に焦点を合わせた)ジッパーを形成し、この構造がコモナドであることがわかります。これは最近、次のタイプの別のStackOverflowの質問で非常に詳細に調査されました。 data Bin a = Branch (Bin a) a (Bin a) | Leaf a deriving Functor 次のジッパー付き data Dir = L | R data Step a = Step a Dir (Bin a) deriving Functor data Zip a = Zip [Step a] (Bin a) deriving Functor instance Comonad Zip where ... …

2
newtypeのMArrayインスタンスの再利用
私はこのようなダースをたくさん持っています: newtype MyBool = MyBool Bool newtype MyInt = MyInt Int 既存のインスタンスを再利用したい: instance MArray IOUArray Int IO where ... instance MArray (STUArray s) Int (ST s) where ... これらのインスタンスを実装し、すべての定型コードを取得することは、私が最後に望んでいることです。 私が達成しようとしていることに非常に近いものを見つけました: {-# LANGUAGE GeneralizedNewtypeDeriving, StandaloneDeriving #-} deriving instance MArray IOUArray MyInt IO deriving instance MArray (STUArray s) MyInt (ST s) しかし、それは失敗します: …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.