3

これに必要な構文を本当に理解できません。おそらく、型がどのように機能するかを理解していないことが原因です。

DataPointタプル(x, dataval)または 2 つのフィールド x と dataval (x は aでDoubledataval は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 `*'

私が達成しようとしている機能/モナドを手に入れるのを手伝ってくれる人はいますか?

4

1 に答える 1