基于不断变化的图像像素,我已经完成了大学课程.
但我不知道如何解决这个问题.
我将[String]转换为3元组列表中的所有像素,然后我将所有像素更改为红色,但是当我执行程序时,它似乎是de模式的问题,终端上的错误是"非 - 功能的彻底模式红色"
并且有红色的功能
toRed :: [String] -> [(String, String, String)]
toRed [] = []
toRed (x:y:z:xs) = (x,"0","0") : toRed xs
Run Code Online (Sandbox Code Playgroud)
程序执行并保存outFile,但不转换所有文件
你匹配两个案例:
[]x:y:z:xs 这留下了两个你没有匹配的案例:
[x][x, y]请记住,以上只是案例的本地描述.由于您的函数是递归的,并且每次重复时减去三个元素,这些情况实际上分别转换为" 长度为3n + 1的列表 "和" 长度为3n + 2的列表 ".
在这些情况下,我无法确切地告诉您该怎么做,因为我不知道您的问题的性质,但包括它们将防止错误.
例如,您可能希望将这两种情况与处理空列表的方式完全相同:
toRed :: [String] -> [(String, String, String)]
toRed [] = []
toRed [x] = []
toRed [x, y] = []
toRed (x:y:z:xs) = (x,"0","0") : toRed xs
Run Code Online (Sandbox Code Playgroud)
如果以这种方式处理这些情况对您有意义,您可能需要考虑将所有三个"空"案例合并到一个包罗万象的案例中:
toRed :: [String] -> [(String, String, String)]
toRed (x:y:z:xs) = (x,"0","0") : toRed xs
toRed _ = []
Run Code Online (Sandbox Code Playgroud)