字符串的Haskell类型强制

新拉

在此代码上,我可以Algo使用一些直接构造函数(如Lit和)构造s列表Nom,但也可以从整数构造这是因为Algo派生而发生的Num

可以对字符串做类似的事情吗?

type Nr = Double
data Algo
  = Nom Nr
  | Lit String
  | Und 
  deriving (Show)

instance Num Algo where
  (+) (Nom a) (Nom b)=Nom(a+b)
  (+) _ _=Und
  (*) (Nom a) (Nom b)=Nom(a*b)
  (*) _ _=Und
  abs (Nom a)=Nom(abs a)
  abs _=Und
  signum (Nom a)=Nom(signum a)
  signum _=Und
  fromInteger a=Nom(fromInteger a)

main=do
  print ([1,2,3,Und,Nom 5,Lit "x"]::[Algo])

运行正常,结果:

[Nom 1.0,Nom 2.0,Nom 3.0,Und,Nom 5.0,Lit "x"]

所需的代码:

print (["test",1,2,3,Und,Nom 5,Lit "x"]::[Algo])

当然会给出错误...转换在哪里发生?在解析/编译?

readPrec也没有帮助

对于"test"被自动“转换”来Algo,你就需要定义的一个实例IsString,然后使用GHC扩展OverloadedStrings

instance IsString Algo where
  fromString = Lit

Live demo

因此,以下内容可以正常工作:

print ["test", 1, 2, 3, Und, Nom 5, Lit "x"]
-- [Lit "test",Nom 1.0,Nom 2.0,Nom 3.0,Und,Nom 5.0,Lit "x"]

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Haskell中将字符串强制为给定长度

来自分类Dev

Haskell期望的类型:IO Char实际的类型:字符串

来自分类Dev

OrientDB强制属性类型为字符串

来自分类Dev

强制使用REAL非空字符串引用类型

来自分类Dev

将类型streamreader强制转换为字符串

来自分类Dev

OrientDB强制属性类型为字符串

来自分类Dev

未强制执行字符串文字类型参数

来自分类Dev

Haskell中StdGen类型的字符串表示的含义

来自分类Dev

将字符串数据读入haskell数据类型?

来自分类Dev

Powershell:强制或强制转换为在字符串变量中命名的类型

来自分类Dev

Haskell,字符串与...字符串?

来自分类Dev

使用类型(“ TEXT”)的字符串表示形式将值强制转换为类型(TEXT)

来自分类Dev

Haskell字符串操作

来自分类Dev

HTML5 data- *属性类型强制转换字符串和数字

来自分类Dev

在Groovy中将字符串集合的类型强制转换为枚举集合

来自分类Dev

是否在其他类型中将数组强制转换为字符串“ special”?

来自分类Dev

PySpark:如何为所有列强制转换字符串数据类型

来自分类Dev

将特定类型的集合强制转换为字符串数组

来自分类Dev

在Groovy中将字符串集合的类型强制转换为枚举集合

来自分类Dev

在Visual Basic强制转换的幕后-从字符串到类型'Double'的转换无效

来自分类Dev

如何在变量上强制使用字符串类型?

来自分类Dev

强制xpath返回字符串lxml

来自分类Dev

强制子类编写文档字符串

来自分类Dev

字符串长度后强制换行

来自分类Dev

字符串类型的转换

来自分类Dev

字符串类型转换

来自分类Dev

Haskell从字符串中删除字符

来自分类Dev

Haskell在字符串中转置字符

来自分类Dev

字符串包含char并返回字符串Haskell

Related 相关文章

热门标签

归档