gpt4 book ai didi

haskell - Haskell 字段标签如何工作?

转载 作者:行者123 更新时间:2023-12-02 15:17:48 25 4
gpt4 key购买 nike

我正在看this example使用 getOpts,其中一部分确实让我困惑:字段标签的语法。

首先,这看起来很简单,创建一个数据类型并声明初始值:

data Options = Options  { optVerbose    :: Bool
, optInput :: IO String
, optOutput :: String -> IO ()
}

startOptions :: Options
startOptions = Options { optVerbose = False
, optInput = getContents
, optOutput = putStr
}

然后使用 getOpt 来遍历选项并使用 foldl 命令确定正在运行的程序的实际参数...然后这个 let 表达式让我感到沮丧:

let Options { optVerbose = verbose
, optInput = input
, optOutput = output } = opts

此后将使用 bool 值和函数 verboseinputoutput。在我更熟悉的大多数编程语言中,这一步会写成这样:

verbose = opts.optVerbose
input = opts.optInput
output = opts.optOutput

Haskell 的行为是否记录在某处?

最佳答案

很正常pattern-matching — 就像当您编写 let (x:xs) = someList 时,它将第一个元素分配给 x 并将列表的其余部分分配给 xs >.

如果你愿意,你可以写:

let verbose = optVerbose opts
input = optInput opts
output = optOutput opts

模式匹配在 Haskell 和 ML 系列中无处不在,但在其他语言中并不常见。

关于haskell - Haskell 字段标签如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3756166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com