【发布时间】:2017-03-02 20:33:01
【问题描述】:
我有一个具有以下结构的地图数据结构:- “英国的首都是什么”->“伦敦” “法国的首都是什么”->“巴黎” 我想循环浏览显示问题的地图:“英国的首都是什么”,要求用户输入。如果用户回答“伦敦”,我打印正确,否则,我打印正确答案“伦敦”。这在像 C# 这样的命令式语言中很容易,但我还没有想出如何在 Haskell 中做到这一点。
【问题讨论】:
-
你为什么要使用地图?地图用于根据键查找值。如果您只想存储/处理值和键,为什么不使用元组列表呢?循环遍历这样的列表是trivial。 (如果你给出的只是一张地图,那么只需将它转换为一个元组列表......)
-
为什么是
Map String String而不仅仅是[(String, String) ]? -
一个简单的种子代码是
sequence_ [print (k,v) | (k,v) <- toList theMap]。 -
将地图转换为列表,然后使用“for循环”:
forM_ (Map.toList m) $ \(k,v) -> do ...fromData.Foldable -
Data.Map.traverseWithKey也很有用。
标签: loops haskell dictionary