我是Haskell的新手,我正在尝试学习如何使用classe,
我有课:
class SomeClass f where
doSome :: Integer -> f
数据类型:
data SomeData = D1 Integer
| D2 SomeData SomeData
我试图创建实例:
instance SomeClass SomeData where
doSome x = D1 x
但是ghci给了我错误:
无法将预期类型“f”与实际类型“SomeClass”匹配
我已经看到有关此问题的一些问题,但我无法让它们为我工作。
我该如何解决这个问题?
答案 0 :(得分:4)
D1
之后使用D2
在此处无效:
data SomeData = D1 Integer
| D2 D1 D1
^^^^^
在D1
之后D2
发生D1
您需要一个类型,但data SomeData = D1 Integer
| D2 SomeData SomeData
是一个函数。
你可能想写:
do
通过此更改,您的代码将进行编译。 (我还将名称data SomeData = D1 Integer | D2 SomeData SomeData
class SomeClass f where
foo :: Integer -> f
instance SomeClass SomeData where
foo x = D1 x
更改为另一个不是Haskell关键字的名称):
for d in my_list:
for k in d:
if k == 'account':
v = []
for d2 in d[k]:
if d2 not in v:
v.append(d2)
d[k] = v