这个函数有没有用例:foo ::(b - > c) - >(a - > b) - >(a - > c)

blu*_*sky -1 haskell

对于这个功能:

foo :: (b -> c) -> (a -> b) -> (a -> c)

取自http://www.seas.upenn.edu/~cis194/spring13/lectures/04-higher-order.html

这是一个没有实际用途的功能吗?由于(b -> c)无法构造除非类型C是该函数内的另一个输入参数?

同样适用于(a -> b) -> (a -> c):b&c不是这些功能的输入参数.

这个功能有用例吗?

kra*_*ich 5

如果问题是关于在实践中使用函数组合,这里有一个小例子.让我们假设我们想要编写一个函数,该函数是数字列表中所有元素的平方和.我们怎么能这样做?好了,我们可以写类似:squareSum xs = sum (map (^2)) xs.但我们也可以使用函数组合:( squareSum = sum . map (^2).在这里使用函数组合而不是foo,但它并不重要).此示例显示了使用函数组合获得的函数(至少在编译和正常工作的意义上它是实用的).当我们需要组合多个函数(可能部分应用)时,函数组合的好处变得更加明显.