如何在 Haskell 中将字符串转换为枚举数据类型?

蟹肉饼

我有一个枚举数据类型,看起来像这样:

data MathExpr a = X
               | Coef a
               | Sum (MathExpr a) (MathExpr a)
               | Prod (MathExpr a) (MathExpr a)
               | Quot (MathExpr a) (MathExpr a)
               | Exp (MathExpr a)
               | Log (MathExpr a)
                 deriving (Eq,Show,Read)

我正在尝试将 String 转换为这种类型。我想使用前奏中可用的读取功能。为此,我创建了另一个函数:

readMathExpr :: String -> MathExpr a
readMathExpr = read

这在编译时给我一个错误,说没有因使用“read”而产生的 (Read a) 实例。如果有人能指出我正确的方向或链接与阅读功能有关的有用教程,我将不胜感激。谢谢 !

罗宾·齐格蒙德

问题只是您提出的类型签名太笼统了。的派生实例ReadMathExpr a时候就已经存在的实例只能Reada也就是说,如果您要自己写出实例,它将开始:

instance (Read a) => Read (MathExpr a) where ...

我不认为在实践中您会希望读取本身不是 实例的类型MathExpr a的类型,因此修复方法只是将必要的类型类约束添加到签名中:aRead

readMathExpr :: (Read a) => String -> MathExpr a
readMathExpr = read

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Haskell中将数据类型转换为BSON?

如何在熊猫中将列的数据类型从字符串转换为列表?

如何在配置单元中将字符串数据类型列转换为日期格式

如何使用python在SQL Server中将字符串数据类型类型的行转换为XML数据类型

如何在Haskell中将Unicode转义序列转换为Unicode字符串

如何在 Python 中将 [{'id':1'}] 之类的字符串转换为列表 [{'id':1'}] 数据类型?

如何在asp.net + vb中将日期时间数据类型转换为字符串

如何在Hive中将格式为“ dd.mm.aaaa”的字符串转换为数据类型?

如何在TypeScript中将字符串转换为枚举?

如何在Typescript中将字符串转换为枚举

如何在Python中将年份和季度数字的字符串转换为period [Q-DEC]数据类型?

如何在H20中将枚举数据类型转换为Numric

如何在Spark SQL Java中将CSV类型字符串转换为数据帧?

如何在Spark中将数据框的列类型从字符串转换为(数组和结构)

如何在Postgres中将字符串类型数据转换为日期格式?

如何在Haskell中将枚举列表转换为另一种枚举?

如何将数据帧数据类型转换为字符串?

如何在 Haskell 中从构造函数转换为字符串?

如何将字符串转换为自定义数据类型

如何将“frozenset({})”字符串转换为数据类型frozenset?

如何枚举Haskell中的递归数据类型?

Haskell:如何将数据类型转换为其特定类型类之一?

如何在Typescript中将字符串转换为字符串文字类型?

如何在 RUST 中将枚举变量的名称转换为字符串?

如何在Haskell中将数字作为字符串添加到字符串

如何在Haskell中将元素添加到数据类型列表

如何在Haskell中将fold函数与其他数据类型一起使用

如何确定作为字符串传递的数值的类型而不丢失数据或转换为错误的数据类型

如何在haskell中创建几种相关的数据类型?