将输出Monad类型的函数转换为输出原始值类型的函数

托默

我有2个类型定义

type Mapper a k v = a -> [(k,v)]
type MapperM m a k v = a -> m [(k,v)]

我想编写一个将类型转换为值的函数

(Ord k, Monad m) => MapperM m a k v

输入

Ord k => Mapper a k v 

基本上是一个以-> m [(k,v)]作为参数并返回-> [(k,v)]作为输出的函数

我所有的尝试都因Haskell类型检查而失败。

阿利斯泰尔·沃尔

我认为这在数学上是不可能的。

考虑m为Maybe的情况:该函数可以从Just [[k,v)]返回[[k,v)],但是从Nothing返回什么呢?

如果monad是IO,则从monad中提取参数将破坏IO提供的安全性。

还应考虑您的功能必须适用于任何可能的单子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将类型的方法转换为类型的函数

函数输出类型

无法将类型“ Int”的值转换为原始类型“ DarwinBoolean”

(Haskell)将函数类型转换为

将函数指针转换为void(*)(),然后重铸为原始类型

将combin输出转换为类型为“ dist”的矩阵

使用python将标准数学输入转换为类型输出

如何将导出的函数转换为函数类型?

如何将函数的列表输出转换为向量

如何将函数输出转换为数字

将原始类型转换为T(也是原始类型)是Rust

如何使用golang中的函数将interface {}值转换为静态类型的值?

Typescript:将函数输入类型与Array.reduce函数中的输出类型匹配

将输入矩阵转换为输出,将原始元素替换为其累积值

VBA数组函数将简单类型的变量转换为值,并且不存储变量引用

将字符串转换为数字数据类型并舍入浮点值的函数

元函数将类型转换为整数,反之亦然

为什么将函数类型转换为AnyObject起作用

将函数依赖类转换为类型族实例

将参数转换为包装函数所需的类型

将函数指针类型转换为对应的字符串

将JSONArray转换为通用类型列表的函数

将非空返回类型的Lambda转换为函数指针

如何导出模板函数的输出类型?

比较断言中的函数输出类型

在 python 中指定函数的输出类型

Go中的函数类型-将特定类型转换为更通用的类型

在 TypeScript 中将函数类型转换为这些函数的返回类型

是否将通用类型参数转换为原始类型的Object?