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

标签 haskell functional-programming type-signature

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

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

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

最佳答案

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

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 - 签名为 : `(a -> a -> b) -> (a -> b)` 的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267798/

相关文章:

haskell - 分区可以应用于 `a -> IO Bool` 吗?

scala - 在Scala中,为什么在此处groupBy中不能使用 `_`?

functional-programming - 不同的编程语言如何使用闭包?

haskell - 组合器的类型签名与其等效 Lambda 函数的类型签名不匹配

types - # 符号在 f# 函数签名中是什么意思?

haskell - 如何在 Haskell 中工作的返回类型上获得 'unpredictable' 重载?

list - 过滤掉列表列表中的空字符串

generics - 为什么编译器会将两个具有不同名称的等效签名的泛型类型变量识别为不同类型?

haskell - haskell中有 `m a -> (a -> m b) -> m a`函数类型吗?

erlang - Erlang 中的列表右旋转