- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
pattern matching of the form: Option{..} <-
(1 个回答)
4年前关闭。
阅读图书馆代码时here我注意到一个看起来很奇怪的语法,我无法理解:
momenta
:: (KnownNat m, KnownNat n)
=> System m n
-> Config n
-> R n
momenta Sys{..} Cfg{..} = tr j #> diag _sysInertia #> j #> cfgVelocities
-- ^^^^^^^^^^^^^^^ the syntax in question
where
j = _sysJacobian cfgPositions
System
的相关定义包括一条记录
{ _sysJacobian :: R n -> L m n }
, 和
{ cfgVelocities :: R n }
是
Config
的记录声明的一部分所以我相信我知道代码的作用,我认为代码的可读性很强,对作者的支持。
最佳答案
总之 : 它是 GHC
的扩展调用 RecordWildCards
.
在 Haskell 中,您可以使用 record syntax定义数据类型。例如:
data Foo = Bar { foo :: Int, bar :: String } | Qux { foo :: Int, qux :: Int }
someFunction :: Int -> Foo -> Foo
someFunction dd (Bar {foo=x}) = dd + x
someFunction dd (Qux {foo=x, qux=y}) = dd + x + y
someOtherFunction :: Foo -> Int
someOtherFunction (Bar {foo=foo, bar=bar}) = foo
someOtherFunction (Qux {foo=foo, qux=qux}) = foo + qux
RecordWildCards
:
{-# LANGUAGE RecordWildCards #-}
foo
,
foo=foo
如果你写
{..}
当我们记录模式匹配时。
someOtherFunction :: Foo -> Int
someOtherFunction (Bar {..}) = foo
someOtherFunction (Qux {..}) = foo + qux
RecordWildCards
对参数进行模式匹配,例如:
someOtherFunction :: Foo -> Int
someOtherFunction (Bar {bar=[], ..}) = foo
someOtherFunction (Bar {..}) = foo + 42
someOtherFunction (Qux {..}) = foo + qux
bar
Foo
的参数带有
Bar
的实例数据构造函数是空字符串,我们返回
foo
值,否则我们添加
42
给它。
关于haskell - 如何阅读haskell中的语法 `Typ{..}`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50268795/
这个问题在这里已经有了答案: pattern matching of the form: Option{..} System m n -> Config n -> R n momen
对于 p、d、q 和数字列表 rollRate 的典型整数值,以下代码: fit = statsmodels.api.tsa.ARIMA(rollRate, (p,d,q)).fit() foreca
抱歉,我是 python 和统计的新手。我对 anova_lm() 函数中的 typ 很好奇。典型值 1、2、3 是什么意思,它们有何不同?这是使用的typ=2的示例代码。 aov_table = s
我有这个数据框: DF V1 V2 P1 03.02.2020 22 04.02.2020 33 05.02.2020 P2 05.02.2020 P1 06.02.2020 我想要这样的
我收到此错误。 org.hibernate.MappingException: Could not determine type for: dom.Whore, at table: Me
我有一个方法应该为每个文档集添加一个服务器时间戳。 Future _setDocument(String path, {Map inputData}) async { final outp
我正在尝试了解 typ 和 pure=True 在 ruamel.yaml Python 库中的含义。 我已阅读文档 here . 到目前为止,我已经了解 typ='safe' 使用安全加载程序,它省
我正在用 python 编写脚本来更新一些包含 jinja2 的 YAML 配置文件。我找到了这个 answer展示了如何使用 ruamel.yaml 和 ruamel.yaml.jinja2 包进行
我正在尝试验证和解码前端发送的 id token 。 运行验证函数时出现此错误。 有时它可能会起作用。 No pem found for envelope: {"alg":"RS256","kid":
我正在编写一段代码,其中我允许用户使用 Intent 将事件添加到日历中,但是每当我尝试将事件插入到较低版本中时,都会得到:不幸的是应用程序已停止和错误是: android.content.Activ
我是一名优秀的程序员,十分优秀!