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

rao*_*rao -1 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
Run Code Online (Sandbox Code Playgroud)

我似乎永远不会想到如何使用hoogle以及如何将列表从main传递给函数

任何帮助都会很有帮助.

cro*_*eea 5

如何使用Hoogle:

您可以从Hoogle看到的类型!!

(!!) :: [a] -> Int -> a
Run Code Online (Sandbox Code Playgroud)

!!获取as和a的列表Int作为索引.由于函数名称周围有括号,这意味着它!!是一个中运算符,因此我们将其写为

xs !! 3
Run Code Online (Sandbox Code Playgroud)

请注意,如果我们将它包装在parens中,它可以被视为前缀运算符:

(!!) xs 3
Run Code Online (Sandbox Code Playgroud)

如何传递列表main:

listofints采取列表,它会返回一个列表.首先,您需要修复以下签名listofints:

listofints :: [Int] -> Int
listofints xs = xs !! 2
Run Code Online (Sandbox Code Playgroud)

要么

listofints = \xs -> xs !! 2
Run Code Online (Sandbox Code Playgroud)

或者,以无点样式:

listofints = (flip (!!) 2)
Run Code Online (Sandbox Code Playgroud)