我正在使用getOpts查看this example,其中一部分确实令我困惑:字段标签的语法。Haskell字段标签如何工作?
首先,这看起来很简单,创建一个数据类型和声明的初始值:
data Options = Options { optVerbose :: Bool
, optInput :: IO String
, optOutput :: String -> IO()
}
startOptions :: Options
startOptions = Options { optVerbose = False
, optInput = getContents
, optOutput = putStr
}
然后getOpt
用于使用foldl
命令要经过选择和确定实际参数为正在运行的程序...然后这让表情让我很沮丧:
let Options { optVerbose = verbose
, optInput = input
, optOutput = output } = opts
布尔和功能verbose
,input
和output
这之后接着使用。在大多数编程语言,我比较熟悉,这一步就写东西,像这样:
verbose = opts.optVerbose
input = opts.optInput
output = opts.optOutput
这里是Haskell的行为记录在某处?
这里有一点补充文件:http://en.wikibooks.org/wiki/Haskell/ Pattern_matching#Introduction_to_records – sclv 2010-09-21 00:41:02
谢谢你所有的好答案! – 2010-09-21 19:00:36
有趣的是:与Brendan Eich讨论JavaScript未来的这段视频展示了一个关于“解构”的幻灯片,其中看起来像是在11:17左右类似的东西。 :) http://hacks.mozilla.org/2010/07/brendan-eich-at-jsconf-2010-whats-coming-in-ecmascript-5-and-more/ – 2010-09-22 07:58:23