我正在写一些代码,我想我可以从一个无限的元组列表中创建一个无限的映射。类似于以下内容:
Map.fromList [(i,i+1)|i<-[1..]]
当然,我立刻发现 Data.Map 和 Data.Set 分别不支持无限 Maps 和 Sets。我注意到一个关于 Data.Set 的贪婪实现的类似问题fromList
,并且在阅读了这里的答案之后,很明显 Set 可以实现惰性和贪婪,只是贪婪的实现更好。但是,我真的不明白为什么懒惰的实现Map.fromList
不起作用。与密钥的存储方式有关吗?