1

ハスケルの世界を理解するのは少し難しいと思うので、助けていただければ幸いです。

Charの2次元配列(シンボルの行列10x10)を作成したいのですが、変更可能である必要があるため、これを試しました。

import Data.Array.IO
arr <- newArray ((1,10), (1,10)) '!' :: IO (IOArray (Int, Int) Char)
a <- readArray arr (1,1)

しかし、うまくいきませんでした。配列の作成方法とそのメンバーへのアクセス方法を教えてください。これが適切でない場合は、別の方法を教えてください。

また、配列内のいくつかの要素を別の色で着色する方法があるかどうかを尋ねたいと思います。System.Console.ANSIをインポートしましたが、別の色にしたいものをどのように正確に色付けするかがよくわかりません。赤い文字を出力する例は本当に役に立ちます。

事前にどうもありがとうございました!:)

4

1 に答える 1

1

これは私のラップトップでエラーなしでコンパイルおよび実行されます。

import Data.Array.IO       -- from the array package
import System.Console.ANSI -- from the ansi-terminal package

main :: IO ()
main = do
        arr <- newArray ((1,1), (10,10)) '!' :: IO (IOArray (Int, Int) Char)
        -- You had ((1,10), (1,10)), in the line above.
        -- That meant (1,10) was the only valid index!
        ch <- readArray arr (1,1)
        setSGR [SetColor Foreground Dull Red]   -- set foreground colour to red
        putStr [ch]
        setSGR []                               -- reset colours
        putStrLn ""

私は、可変配列の代わりに通常の不変配列を使用するというCAMcCannの提案を2番目にしています。(残念ながら、Haskellで配列を使用した経験はほとんどないので、古い配列から更新された配列を1つのステップで計算する方法を提案するのは他の誰かに任せます。)

于 2013-01-04T18:37:15.893 に答える