我想知道具有以下签名和实现(Haskell-notation)的函数是否有一个好名字:
humble :: (a -> a -> b) -> a -> b
humble f x = f x x
似乎与fold1
(fold
没有基本情况)有某种关系。
答案 0 :(得分:9)
正如@ 4castle在评论中提到的那样,您正在寻找的功能是<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
中的join
。它的类型是
Control.Monad
简单的读者monad是join :: Monad m => m (m a) -> m a
,所以如果我们设置(->) r
,我们就会得到
m ~ (->) r
或者更简洁地说,
join :: (->) r ((->) r a) -> (->) r a
这就是你想要的。