问题标签 [as-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
list - Erlang 相当于 Haskell 的 as 模式
如何在 Erlang 中编写与此 Haskell 片段等效的内容?
name@(x:xs)
haskell - as-pattern 的功能,通过“as pattern”不重叠的模式
我是函数式编程的新手,尤其是 haskell,并且有两个问题比比皆是,因为模式和通过使用它来减少重叠。给出以下代码示例:
last1
与 相比应该是不重叠的last2
。让我们看一下具体的 String f:[]
。它将与[x]
和(x:xs)
in匹配last1
。
在last2
它会匹配到[y]
. 但不是(y:ys@(_:_))
,因为ys
必须匹配(_:_)
并且只满足第一个 any 模式[]
。
我的假设正确吗?
现在来看看具体的 String f:o:o:[]
。现在模式(y:ys@(_:_))
匹配。在这种情况下,我很好奇绑定是如何工作的。ys
第一次通话后是什么?我认为是o:o:[]
。
types - OCAML 将定义类型与定义混淆?
我正在从事一项将正则表达式转换为 NFA 并将 NFA 转换为 OCAML 中的 DFA 的任务。我一直在一个单独的文件中编写我的代码,以便单独测试每个“功能”,但是在使用 as-pattern 时遇到了一个问题。
NFA 定义:
当我自己编译下面的代码时(即我不使用make文件,而是手动输入编译命令),我没有问题,它的工作方式也和假设的一样:
这没有任何意义。Nfa.t的类型:
'a * 'b * 'c * 'd * 'e
如其声明所示:
如果我取出那个元组并将名称“ nfa ”分配给create_new_nfa函数的输出,那么它编译得很好,但到底为什么会发生这种情况呢?
作为参考,make 文件可以在这里找到
haskell - 除了 as-pattern,@在 Haskell 中还有什么含义?
我目前正在学习 Haskell,并试图了解一个使用 Haskell 实现加密算法的项目。在在线阅读Learn You a Haskell for Great Good之后,我开始理解该项目中的代码。然后我发现我被以下带有“@”符号的代码卡住了:
这里randomMtx定义如下:
PRFKey 定义如下:
我能找到的所有信息源都说 @ 是 as-pattern,但这段代码显然不是那种情况。我查看了https://www.haskell.org/definition/haskell2010.pdf上的在线教程、博客甚至Haskell 2010 语言报告。这个问题根本没有答案。
在这个项目中也可以通过这种方式使用 @ 找到更多代码片段:
我非常感谢这方面的任何帮助。
haskell - as-pattern 和 list 模式匹配问题
此 pdf的练习 2内容如下:
一旦我们以正确的顺序获得数字,我们需要每隔一个加倍。定义一个函数
doubleEveryOther :: [Integer] -> [Integer]
请记住,doubleEveryOther 应该从右边开始每隔一个数字加倍,也就是说,倒数第二个、倒数第四个、... 的数字都加倍。
我创建了一个实现,但它没有做我期望的事情。这是我的代码:
以及它运行的一些示例:
然而,我预计
您会看到,在条目数量为偶数的情况下,它会部分地通过序列发生故障。我的猜测是我没有正确处理列表项的结尾,[]
或者我没有正确使用 as-pattern。