当我看到在haskell中获取第n个元素时,我看到的是人们所指的!!符号
我如何在函数中使用它,到目前为止我已经尝试过
module Main where
main :: IO ()
main = do
let line = [4.9.45.3]
print $ listofints line
listofints :: Int -> [Int]
listofints = \xs !! 2
我似乎从未理解如何使用hoogle 以及如何将列表从main传递到函数
任何帮助都会很受欢迎。
答案 0 :(得分:5)
如何使用Hoogle:
你可以从Hoogle看到!!
的类型是
(!!) :: [a] -> Int -> a
!!
会将a
和Int
列为索引。由于函数名称周围有括号,这意味着!!
是 infix 运算符,因此我们将其写为
xs !! 3
请注意,如果我们将它包装在parens中,它可以被视为前缀运算符:
(!!) xs 3
如何从main
传递列表
listofints
不>>列表,返回列表。首先,您需要修复listofints
:
listofints :: [Int] -> Int
listofints xs = xs !! 2
或
listofints = \xs -> xs !! 2
或者,无点样式:
listofints = (flip (!!) 2)
答案 1 :(得分:3)
您的问题不在于!!
运算符;它是定义一个函数,声明它的类型,也显然是写一个列表。
以下是您使用!!
运算符的方式:
items = [1,2,3,4]
secondItem = items !! 2
-- secondItem will be the number 3
我会让剩下的程序正确地解决你的问题。