带有签名的函数的名称:`(a -> a -> b) -> (a -> b)`

Name for the function with signature: `(a -> a -> b) -> (a -> b)`

我想知道具有以下签名和实现(Haskell-表示法)的函数是否有一个好的名称:

humble :: (a -> a -> b) -> a -> b
humble f x = f x x

它似乎与 fold1 有某种关系(fold,没有基本情况)。

正如@4castle 在评论中提到的,您要查找的函数是Control.Monad 中的join。它的类型是

join :: Monad m => m (m a) -> m a

简单的 reader monad 是 (->) r,所以如果我们设置 m ~ (->) r,我们得到

join :: (->) r ((->) r a) -> (->) r a

或者,更简洁地说,

join :: (r -> r -> a) -> (r -> a)

这就是你想要的。