我该怎么用!!在一个功能

时间:2014-03-03 23:48:08

标签: haskell

当我看到在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传递到函数

任何帮助都会很受欢迎。

2 个答案:

答案 0 :(得分:5)

如何使用Hoogle:

你可以从Hoogle看到!!的类型是

(!!) :: [a] -> Int -> a

!!会将aInt列为索引。由于函数名称周围有括号,这意味着!! 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

我会让剩下的程序正确地解决你的问题。