在Haskell中苦苦寻找列表列表

时间:2014-01-19 15:37:06

标签: haskell

有人可以帮我这个功能吗?

 getCell :: [[Int]] -> Int -> Int -> Int  

其中m i j是行列表和列表列m的列。 索引从零开始,每行的大小相同。 如果i或j无效,则该函数应返回-1。

我正在考试Haskell,尽管事实上这可能会出现,我仍然想知道我该怎么做,而且因为我从未使用过Haskell中的列表列表,所以我没有想法如何开始解决这个问题。你能帮我个忙吗?

这是我到目前为止所做的:

getCell :: [[Int]] -> Int -> Int -> Int
getCell [] _ _ = "the list is empty!"
getCell zs x y =
    if x > length zs || y > length (z:zs)  then -1 else
        let row = [x| x == !! head z <- zs]
            column = ...

我不知道如何找到行和列

2 个答案:

答案 0 :(得分:2)

这应该可以使用(!!)运算符。首先检查索引是否在列表中,然后使用(!!)访问该索引处的元素。

getCell m i j = if i >= length m then -1
                else let
                         m0 = m !! i
                     in if j >= length m0 then -1
                        else m0 !! j

答案 1 :(得分:0)

只是为了好玩 - 一个班轮

getCell l i j = (((l ++ repeat []) !! i) ++ repeat (-1)) !! j