【发布时间】:2011-08-24 16:22:07
【问题描述】:
我在这部分作业中取得了一些进展,但在下面附上了我所做的部分代码:
module Grid where
data State = On | Off deriving (Eq, Show)
next :: State -> State
next On = Off
next Off = On
type Row = [State]
updateRow :: Row -> Int -> Row
updateRow (r:rs) x
| x == 0 = next r:rs
-- | otherwise = ........????
如上面最后一行所示,我已经设法让 updateRow 在 x = 0 时工作,如下所示(第 0 个元素倒置)。
*Grid> updateRow [Off,Off,Off,Off] 0
[On,Off,Off,Off]
*Grid>
但是,当我尝试反转此列表中的其他元素时,这一切都没有解决。我似乎无法在此函数中“概括”公式。
我还必须遵循这个类型约定:
updateRow :: Row -> Int -> Row
提前致谢。
【问题讨论】:
-
尝试让 updateRow 递归?不清楚你想在这里做什么。
-
看看
slice函数 -
@abesto
slice功能不正常。 -
@aleator 基本上使 updateRow 递归可能是一种方法,但我愿意接受所有建议,前提是 updateRow 保留类型
updateRow :: Row -> Int -> Row -
不,它不是@Don Stewart,它没有出现在建议栏中。我发表的另一篇文章是关于字符串而不是泛型类型。
标签: list haskell element variable-assignment