これに必要な構文を本当に理解できません。おそらく、型がどのように機能するかを理解していないことが原因です。
DataPoint
タプル(x, dataval)
または 2 つのフィールド x と dataval (x は aでDouble
dataval はComplex Double
.
Monad
次のようなインスタンスが必要です。
instance Monad (DataPoint x dataval) where
return dataval = DataPoint 0.0 dataval
DataPoint x dataval >>= f = DataPoint x (f dataval)
基本的に、モナドの「値」は dataval であり、x はコンテナーの一部です。
ただし、構文が正しいとは思いません。DataPointを次のように定義すると
data DataPoint x dataval = DataPoint { x :: Double
, dataval :: Complex Double }
それならうまくいくはずですよね?
私だけが「親切なミスマッチ」を得る
The first argument of `Monad' should have kind `* -> *',
but `DataPoint x dataval' has kind `*'
私が達成しようとしている機能/モナドを手に入れるのを手伝ってくれる人はいますか?