所以我有这个:
public void CreateJoke()
{
var client = new RestClient("https://icanhazdadjoke.com/");
client.AddDefaultHeader("user-agent", "Dadbot");
var request = new RestRequest("https://icanhazdadjoke.com/");
var response = client.Get(request);
lblJoke.Text = response.Content;
}
问题是,k的类型为[Char],而键的类型为(也许是a):
lstDelete :: [Char] -> Lst a -> Lst a
lstDelete k inp@(lstNode key)
| k == key && lstIsEmpty = Map.delete key (Map.fromList inp)
所以我收到错误消息:
data Lst a = lstNode (Maybe a)
如何在不更改Couldn't match expected type ‘[Char]’ with actual type ‘Maybe a’
的情况下解决此问题?我也想保留lstDelete :: [Char] -> Lst a -> Lst a
,因为我也希望它也可以为空。
答案 0 :(得分:9)
您的代码有几个问题:
data Lst a = LstNode (Maybe a)
您的列表只能包含一个值
lstDelete
没有任何意义。它接受[Char]
作为键,并接受Lst a
作为列表。无法比较它们(没有非平凡的函数可以接受这些参数)。您应该将类型更改为
lstDelete :: [Char] -> Lst [Char] -> Lst [Char]
或编写更通用的
lstDelete :: Eq a => a -> Lst a -> Lst a
Map.fromList
接受[(k, v)]
,您不能将Lst a
传递给它。lstIsEmpty
未定义。