问题标签 [partialfunction]

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 投票
2 回答
393 浏览

scala - Scala偏函数类型定义

在此代码中,函数按预期工作tot时会引发匹配错误。tot2它们之间的唯一区别是它们的定义方式。谁能解释为什么结果如此不同?

提前致谢!!!

0 投票
2 回答
242 浏览

scala - 在函数式编程术语中,你用 orElse 或其他后备方法叫什么?

使用 scala 作为参考,我们orElse在几个地方看到了一个后备行为 ( ),例如PartialFunctionOption和 cat EitherOps

这感觉与 monad 的扁平化行为相似但不一样。对于表现出这种行为的事物,是否有一个函数式编程术语?

编辑:到目前为止,一些很好的答案,在猫身上挖掘更多,我发现

所以我现在看到 scalazAlt和 haskell与 catAlternative不太一样Alternative。更有趣的是SemigroupKPlus根据猫文档在 scalaz 中调用)。
所以我们可以说这种行为是由一个类型表现出来的,如果没有一个半群作为它的内部类型,你就不能定义一个半群(因为我们可能会说 scalazAlt和 haskellAlternative是这种类型的半群)?

0 投票
1 回答
1284 浏览

scala - Scala 缺少扩展函数的参数类型匿名函数的参数类型必须是完全已知的。(SLS 8.5)

我有以下片段需要完成分配。为了完成任务,我必须正确替换评论/*fulfill ...*/。但是我尽力了,我仍然得到一个

扩展函数缺少参数类型匿名函数的参数类型必须是完全已知的。(SLS 8.5)错误。

我发现与此错误相关的类似问题。但是,我无法为这些答案的特殊问题找到解决方案。

所以目标是检查事件是否满足属性。

我很高兴每一个提示。

这是我需要完成的代码:

0 投票
3 回答
283 浏览

scala - Scala 的“部分函数”概念和 F# 中的“.orElse”方法

function在 Scala 中有一个“部分函数”的概念,它与 F# 的关键字允许我实现的非常相似。然而,Scala 的部分函数也允许通过orElse如下所示的方法进行组合:

我需要知道是否有办法在 F# 中实现相同的合成功能。

0 投票
3 回答
171 浏览

scala - Scala function composition totalFn(partialFn(totalFn(x)))

I was trying to compose three functions with only the middle one being a PartialFunction. I would expect the resulting type to be PartialFunction as well.

Example:

However, calc is not defined on the whole of its domain. It will throw MatchError for every number divisible by 10.

What is the reason for returning a total function when at least one of the functions in the composition is partial?

Another example where composition of partial functions results in another partial function with incorrect domain conditions:

I would expect the domain of calc to be (-Infinity, -1] union [1, Infinity) but calling calc.lift(0.5) will throw a MathError instead of returning None because the input is within the first function's domain.

Thanks, Norbert

0 投票
2 回答
113 浏览

scala - 组合部分函数以减少代码长度

我想以特定方式编写函数以减少代码长度

例如像这样组成一个简单的 add 函数:

这将非常有用,因此我不必每次都将ab作为参数传递。

有没有办法在 Scala 中做到这一点?

0 投票
1 回答
179 浏览

scala - Akka Typed 中具有详尽模式匹配的类型安全状态

我开始使用 Akka Typed 来对我的行为进行详尽的模式匹配,这对于每个参与者的面向外部的契约非常有用。但是,如果参与者是状态机,则不同的状态很可能具有特定于状态的命令。

我可以将特定于状态的命令隐藏为整个命令的私有成员,如下所示:

但是,我的两种状态accumulatingemitting不得不处理彼此的命令。我可以使用.receivePartial或包含一个包罗万象的

在这两种情况下,我都失去了详尽的模式匹配,以确保我正确处理我的状态。

我可以进一步细化命令:

有了这个我可以定义Behavior[Accumulating]两者Behavior[Emitting]都是Behavior[Command],但问题是任何一种行为都无法转换到另一个,因为两者都必须返回自己的类型。

我尝试了各种排列但无济于事,.widen.narrow意识到我真正需要的是一种将 a 定义Behavior为的方法

wherehandler可以让我对窄类型进行详尽的检查,V并且任何消息TV将返回Behaviors.unhandled。我似乎无法让这些类型工作以实现这样的功能。

0 投票
2 回答
475 浏览

scala - 为什么提供部分函数来映射在运行时抛出而不是给出编译错误?

抱歉,如果这很明显,但我是 scala 的新手,并且使用以下代码出现了两个意外行为:

1) 我本来希望得到一个字符串不变且数字增加 1 的集合,但我得到了一个错误。

2)我相信case i: Int => i + 1语法代表了为 Ints 定义的部分函数。但似乎 map 需要一个总函数,那为什么还要编译呢?编译器帮助我不是更好吗?将运行时异常转移到编译时异常总是更好。

0 投票
2 回答
195 浏览

regex - Scala 正则表达式偏函数,正则表达式在偏函数中定义

问题

this answer to a related Scala Regex Partial Function question,我可以使用以下代码定义一个与正则表达式模式匹配的部分函数:

第一行定义正则表达式,而第二行定义输入。是否可以将正则表达式的定义移动到部分函数内?我试过做:

但是代码不会编译。是否可以在函数内部定义要匹配的正则表达式(或至少包含范围)?

语境

输入是字符串列表。每个字符串将匹配一个不同的正则表达式,并且会以不同的方式处理。例如,如果字符串是数字-字母对,则返回数字;如果字符串是 ISO 格式的日期,则返回年份;如果字符串是大写字符串,则返回最后 4 个字符。

输入:List("1,a", "23,zZ", "1990-10-21", "1ab", "", "ABCDEF")

输出:List("1", "23", "1990", "CDEF")

案例的数量和案例本身可能会发生变化,因此代码应该能够处理这些变化。

0 投票
3 回答
621 浏览

scala - 理解部分函数中的“case”关键字

我是 Scala 的新手,我正在尝试解码它的结构,我了解了模式匹配,语法类似于 Java switch 语句

这里的代码非常明显且可读。我遇到了部分功能,它们非常明显并且很清楚它们是什么

偏函数是一个函数,它不能为它可以给出的每个可能的输入值提供答案。

我感到困惑的是case在这样的部分函数的主体中使用:

我不明白如何case在没有match语句的情况下使用,Scala 如何解释它,它是如何读取的,它是一个方法、一个类还是另一个构造?,我可以case在没有match语句的情况下使用哪些其他方式

编辑:

我试图玩弄这个案例,但仍然没有得到它。例如

这是如何运作的?

尝试这样做会出错

不匹配的大小写是否在偏函数之外的其他任何地方使用?