Haskell 无法将[Char]与实际类型(可能是a)绑定
所以我有这个:Haskell 无法将[Char]与实际类型(可能是a)绑定,haskell,ghc,ghci,Haskell,Ghc,Ghci,所以我有这个: lstDelete :: [Char] -> Lst a -> Lst a lstDelete k inp@(lstNode key) | k == key && lstIsEmpty = Map.delete key (Map.fromList inp) 问题是,k的类型是[Char],key的类型可能是a: data Lst a = lstNode (Maybe a) 所以我得到的错误是: Couldn't match expected
lstDelete :: [Char] -> Lst a -> Lst a
lstDelete k inp@(lstNode key)
| k == key && lstIsEmpty = Map.delete key (Map.fromList inp)
问题是,k的类型是[Char],key的类型可能是a:
data Lst a = lstNode (Maybe a)
所以我得到的错误是:
Couldn't match expected type ‘[Char]’ with actual type ‘Maybe a’
如何在不更改lstDelete::[Char]->lsta->lsta的情况下修复此问题?我还想保留a,因为我希望它也能为空。您的代码有几个问题: 构造函数名称应以大写字母开头。 您的列表只能包含一个值 lstDelete没有任何意义。它接受[Char]作为键,Lst作为列表。没有办法比较它们,也没有可以接受这些参数的非平凡函数。您应该将类型更改为 或者写得更一般一些
lstDelete :: Eq a => a -> Lst a -> Lst a
Map.fromList接受[k,v],不能将Lst a传递给它。
未定义lsistempty。
您的代码有几个问题: 构造函数名称应以大写字母开头。 您的列表只能包含一个值 lstDelete没有任何意义。它接受[Char]作为键,Lst作为列表。没有办法比较它们,也没有可以接受这些参数的非平凡函数。您应该将类型更改为 或者写得更一般一些
lstDelete :: Eq a => a -> Lst a -> Lst a
Map.fromList接受[k,v],不能将Lst a传递给它。
未定义lsistempty。
你能描述一下这个函数应该做什么吗?比如,lstDelete foo LstNode 42的输出是什么?Map.delete是什么?地图。从列表?LSISEMPTY?你能描述一下这个函数应该做什么吗?比如,lstDelete foo LstNode 42的输出是什么?Map.delete是什么?地图。从列表?我是空的?
lstDelete :: Eq a => a -> Lst a -> Lst a