mapArray を使用して可変配列に関数をマップできることがわかりましたが、mapM (および mapM_) のようなものはないようです。mapArray では、その要素を出力できません。次に例を示します。
import Data.Array.Storable
arr <- newArray (1,10) 42 :: IO -- answer to Life, Universe and Everything
x <- readLn :: IO Int
mapArray (putStrLn.show) arr -- <== this doesn't work!
結果は次のようになります。
No instances for (MArray StorableArray Int m,
MArray StorableArray (IO ()) m)
arising from a use of `mapArray' at <interactive>:1:0-27
Possible fix:
add an instance declaration for
(MArray StorableArray Int m, MArray StorableArray (IO ()) m)
In the expression: mapArray (putStrLn . show) arr
In the definition of `it': it = mapArray (putStrLn . show) arr
Haskell (または、標準の Haskell でなくても GHC) にそのようなものはありますか?
また、配列用のfoldr/foldl関数が見つかりませんでした(変更可能かどうかに関係なく)。それらは存在しますか?
どうもありがとう!