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

fre*_*der 4 haskell functional-programming type-signature

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

humble :: (a -> a -> b) -> a -> b
humble f x = f x x
Run Code Online (Sandbox Code Playgroud)

它似乎与某种方式有关fold1(fold没有基本情况).

Sil*_*olo 9

正如在评论中提到由@ 4castle,你正在寻找的功能是joinControl.Monad.它的类型是

join :: Monad m => m (m a) -> m a
Run Code Online (Sandbox Code Playgroud)

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

join :: (->) r ((->) r a) -> (->) r a
Run Code Online (Sandbox Code Playgroud)

或者,更简洁地说,

join :: (r -> r -> a) -> (r -> a)
Run Code Online (Sandbox Code Playgroud)

这就是你想要的.