问题标签 [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.

0 投票
4 回答
198 浏览

haskell - 为什么向工作函数添加 as-pattern 会导致编译错误?

这是标准的 Functor 实例Either a

在加载到 GHCi 时添加 as-pattern 会导致编译错误:

为什么这不起作用?

0 投票
1 回答
448 浏览

list - Erlang 相当于 Haskell 的 as 模式

如何在 Erlang 中编写与此 Haskell 片段等效的内容?

name@(x:xs)

0 投票
2 回答
113 浏览

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:[]

0 投票
1 回答
138 浏览

types - OCAML 将定义类型与定义混淆?

我正在从事一项将正则表达式转换为 NFA 并将 NFA 转换为 OCAML 中的 DFA 的任务。我一直在一个单独的文件中编写我的代码,以便单独测试每个“功能”,但是在使用 as-pattern 时遇到了一个问题。

NFA 定义:

当我自己编译下面的代码时(即我不使用make文件,而是手动输入编译命令),我没有问题,它的工作方式也和假设的一样:

但是当我使用他们的 make 文件时,它会抱怨以下内容: 在此处输入图像描述

这没有任何意义。Nfa.t的类型:

'a * 'b * 'c * 'd * 'e

如其声明所示:

如果我取出那个元组并将名称“ nfa ”分配给create_new_nfa函数的输出,那么它编译得很好,但到底为什么会发生这种情况呢?

作为参考,make 文件可以在这里找到

0 投票
1 回答
465 浏览

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 语言报告。这个问题根本没有答案。

在这个项目中也可以通过这种方式使用 @ 找到更多代码片段:

我非常感谢这方面的任何帮助。

0 投票
1 回答
79 浏览

haskell - as-pattern 和 list 模式匹配问题

此 pdf的练习 2内容如下:

一旦我们以正确的顺序获得数字,我们需要每隔一个加倍。定义一个函数 doubleEveryOther :: [Integer] -> [Integer] 请记住,doubleEveryOther 应该从右边开始每隔一个数字加倍,也就是说,倒数第二个、倒数第四个、... 的数字都加倍。

我创建了一个实现,但它没有做我期望的事情。这是我的代码:

以及它运行的一些示例:

然而,我预计

您会看到,在条目数量为偶数的情况下,它会部分地通过序列发生故障。我的猜测是我没有正确处理列表项的结尾,[]或者我没有正确使用 as-pattern。