【发布时间】:2011-08-25 10:58:51
【问题描述】:
为了学习 Haskell(好语言),我正在尝试来自 Spoj 的问题。
我有一个包含 19000 个元素的表,这些元素在编译时都是已知的。 如何使用“seq”使表格严格? 这是我的代码中的一个(强)简化示例。
import qualified Data.Map as M
-- table = M.fromList . zip "a..z" $ [1..] --Upps, incorrect. sorry
table = M.fromList . zip ['a'..'z'] $ [1..]
【问题讨论】:
-
你知道吗?为什么你需要严格?如果不是,我会说 YAGNI。
-
据我所知,这只是 4 个元素?
-
你到底要严格什么?存储在地图中的元素?地图本身的构造?为什么?
-
严格是指您希望在编译时评估(创建)表吗?
-
@Jogusa 我认为说服 ghc 在编译时构建表将非常困难。如果你绝对必须,那么 Template Haskell 可以做到,但不能使用 Data.Map。但是为什么在第一次访问时有一点额外的时间不好呢?
标签: performance haskell data-structures compile-time strictness