繁体   English   中英

Haskell中的2维可变数组,并使用ANSI为输出着色

[英]2 Dimensional Mutable Array in Haskell and coloring the output with ANSI

我发现很难理解Haskell的世界,因此,我将不胜感激!

我想创建Chars的二维数组(符号矩阵为10x10),并且应该是可变的,因此我尝试了以下操作:

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

但是没有解决。 您能否告诉我如何创建数组以及如何访问其成员,或者如果这不是一个好方法,那么可以这样做吗?

我也想问一下是否有一种方法可以用不同的颜色为数组中的某些元素着色。 我导入了System.Console.ANSI,但是我不太确定如何准确地将我想要的颜色着色为其他颜色。 一个输出红色字母的示例将非常有帮助。

提前非常感谢您! :)

这样可以在我的笔记本电脑上编译并正常运行。

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 ""

我赞同CA McCann的建议,即使用普通的,不可变的数组而不是可变数组。 (不幸的是,我几乎没有在Haskell中使用数组的经验,所以我将其交给其他人来建议如何在一个步骤中从旧数组中计算更新后的数组。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM