On Thu, 18 Nov 2004 13:19:07 +0900 (JST), Masahiro Sakai  
<sakai / tom.sfc.keio.ac.jp> wrote:
>> ちなみに lowpassFilter ::  IOArray Point Color -> m (IOArray Point  
>> Color)
>> では、以下のようなエラーがでました。
>>
>> Could not deduce (MArray IOArray Color m) from the context ()
>>    arising from use of `newListArray' at C:/develop/ImageViewer.hs:186
>> Probable fix:
>>      Add (MArray IOArray Color m)
>>      to the type signature(s) for `lowpassFilter'
>>      Or add an instance declaration for (MArray IOArray Color m)
>> In the definition of `lowpassFilter':
>>
>> MArray IOArray e IO が IOArray i e なはずなのに……と思いつつも
>> IOArray Point Color -> MArray IOArray Color m と宣言したところ
>> 以下の通り。
>>
>> Class `MArray' used as a type
>> When checking kinds in `MArray IOArray Color m'
>> In the type: forall m.
>>               IOArray Point Color -> MArray IOArray Color m
>> While checking the type signature for `lowpassFilter'
>>
>> うーん、なんか釈然としない……。
>
> エラーメッセージをちゃんと読みましょう。
> 原因はすべてエラーメッセージの通りです。

あーそういうことですか。
(MArray IOArray Color m) => IOArray Point Color ->  m (IOArray Point Color)

Or add an instance declaration for (MArray IOArray Color m)

が見えてなかったようです。すみません。

IOArray Point Color ->  IO (IOArray Point Color) なら具体的なインスタンス
として通るようですね。

-- 
shelarcy <shelarcy capella.freemail.ne.jp>
http://page.freett.com/shelarcy/