这个函数在Haskell中做了什么?我对这种类型感到困惑

use*_*256 1 haskell

q3 a (b:[]) = a b
q3 a (b1:b2:bs) = q3 a (b2:bs)
Run Code Online (Sandbox Code Playgroud)

似乎a对功能没有任何影响.我的理解是这个函数有两个参数,第二个是列表,并返回第一个参数和第二个列表的尾部.但是,我对类型感到困惑:

q3 :: (t1 -> t) -> [t1] -> t
Run Code Online (Sandbox Code Playgroud)

怎么a相关t1 -> t?谢谢.

Mih*_*eac 8

函数的第一行在a b等号后面.因此a,必须是一个函数,因为它是一个函数应用程序.由于b是列表元素的类型,因此a是从列表中的元素类型到函数的返回类型的函数.

该函数仅适用a于列表的最后一个元素.因此,它类似于a . last.