带有签名的函数的名称:`(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)
这就是你想要的。
我想知道具有以下签名和实现(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)
这就是你想要的。