问题标签 [pattern-guards]

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 投票
3 回答
252 浏览

haskell - 如何让 Haskell 中的函数取决于其参数的类型?

我尝试编写一个变体show,将字符串与 的其他实例不同Show,不包括 " 并直接返回字符串。但我不知道该怎么做。模式匹配?警卫?我找不到任何关于在任何文档中。

这是我尝试过的,但无法编译:

0 投票
4 回答
619 浏览

haskell - 如何在状态单子的字段上进行模式匹配?

a是否可以使用模式匹配/防护来编写函数?

我试着a写成

但得到了错误:

0 投票
2 回答
2344 浏览

functional-programming - 模式匹配中的 OCaml "with" 保护

我在code.google.com上阅读了有关模式保护的信息,其中显示了这种类型的保护:

然而,在 OCaml 4.02 中,似乎不起作用(Syntax error: pattern expected.),所以问题是:有一种解决方法可以在模式匹配中实现这种绑定吗?我想写这样的东西

提前谢谢,干杯。

0 投票
1 回答
122 浏览

haskell - 不知道为什么这个模式保护匹配

学习 Haskell,我不确定为什么我没有得到预期的结果,给定这些定义:

我写了这个函数

然而:

如果我专门为 Integer 编写一个版本:

然后我得到了预期的结果。

为什么(Lit mulId) <- x即使 x 不是 (Lit 1) 也匹配?

0 投票
1 回答
623 浏览

haskell - 警告模式保护并非详尽无遗,即使它是

当使用带有模式保护的模式匹配并且所有警告都打开时,我观察到一个有趣的行为

即使flipMood并且flipMood'几乎在做同样的事情,我也会收到以下错误消息:

因此需要添加一个 catch all case 比如

来满足穷举检查器。

Core 似乎很好,这两个函数的行为相同:

关闭优化后,我得到以下核心输出,这似乎可以解释这种行为:

为什么会这样?我错过了什么吗?

亲切的问候, raichoo

0 投票
3 回答
1044 浏览

haskell - 在 Haskell 中是否有类似于 sub-guard 的东西?

我正在编写一个关于音程分类的程序。概念结构相当复杂,我会尽可能清楚地表示出来。前几行代码是一个可以正常工作的小片段。第二个是满足我简洁需求的伪代码。

是否有一种编程结构可以像下面的伪代码那样简化代码?

预先感谢您的建议。

0 投票
1 回答
660 浏览

haskell - Haskell:表达式上下文中的模式语法:_

我是 Haskell 的新人。这是我的程序:

编译器显示:表达式上下文中的模式语法:_。当我只使用没有防护装置的情况时,它可以工作。为什么它在警卫内不起作用?

0 投票
2 回答
475 浏览

erlang - Erlang/Elixir 守卫和 arity

有没有办法在不查看源代码的情况下查看函数的守卫?

给定一个示例函数(在 Elixir 中):

在没有访问源代码的情况下,如何确定在 divide/2 上有一个守卫,以及如何找到有关该守卫的信息或该守卫对模式匹配的期望?

我在 Ruby Conf 2014 上观看了 Chris McCord(Elixir 的 Phoenix 框架的创建者)的演讲。在演讲中,Chris 正在描述守卫,有人问是否有一种方法可以检查函数以显示该函数的守卫。

这是谈话中的问题:

https://www.youtube.com/watch?v=5kYmOyJjGDM&t=5188

该问题在视频的 t= 时间后不久提出。

0 投票
1 回答
5403 浏览

haskell - 模式类型签名中建议的 ScopedTypeVariables

我开始编写 Haskell 代码。我尝试使用 Guards 编写斐波那契函数 -

我收到了这个错误:-

非法类型签名:'(Num z, Ord z) => z -> z fibo d' 也许您打算在模式类型签名中使用 ScopedTypeVariables

然而,另一个函数 - 复制我以类似的方式编写,编译和工作正常。我可以用另一种方式写斐波那契,但我想知道错误是什么

0 投票
1 回答
2314 浏览

haskell - Haskell 函数检查数字是否为奇数,而不使用奇数函数

任何人都可以帮助我吗?我正在尝试编写一个函数来检查 x 是否为奇数,而不使用奇数函数。像这样它不起作用,但我不知道为什么。

错误