哈斯克尔!!操作员组合

时间:2017-02-03 01:47:16

标签: haskell

在以下代码中,m!!i!!j代表什么?任何例子都会有所帮助。

matrixElements :: [[t]] -> [t]
matrixElements m =
   [m!!i!!j | i<-[0..length m - 1],
              j<-[0..length(head m) - 1],
              even(i + j)]

main = assertEqual [1,3,5,7,9] $ matrixElements [[1,2,3], [4,5,6], [7,8,9]]

1 个答案:

答案 0 :(得分:3)

这取决于导入的内容。 There are many functions named (!!)

最有可能是the one in Prelude

  

#Example data test <- structure(list(UserID = c("53017366", "53017366"), Q3_1 = c(3L, 3L), Q3_2 = c(2L, 2L), Q3_3 = c(3L, 3L), Q3_4 = c(NA, 5L)), class = "data.frame", row.names = c(NA, -2L), .Names = c("UserID", "Q3_1", "Q3_2", "Q3_3", "Q3_4")) #what I'd like to see, but doesn't work test %>% mutate(total = sum(starts_with("Q3"), na.rm = TRUE)) #What I'd like to end up with: UserID Q3_1 Q3_2 Q3_3 Q3_4 total 1 53017366 3 2 3 NA 8 2 53017366 3 2 3 5 13

     

列表索引(下标)运算符,从0开始。它是更通用的genericIndex的实例,它采用任何整数类型的索引。

一些简单的例子:

  • (!!) :: [a] -> Int -> a
  • "abcde" !! 2 == 'c'
  • ["zero", "one", "two", "three"] !! 2 == "two"
相关问题