问题标签 [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.
scala - Scala偏函数类型定义
在此代码中,函数按预期工作tot
时会引发匹配错误。tot2
它们之间的唯一区别是它们的定义方式。谁能解释为什么结果如此不同?
提前致谢!!!
scala - 在函数式编程术语中,你用 orElse 或其他后备方法叫什么?
使用 scala 作为参考,我们orElse
在几个地方看到了一个后备行为 ( ),例如PartialFunction
、Option
和 cat EitherOps
。
这感觉与 monad 的扁平化行为相似但不一样。对于表现出这种行为的事物,是否有一个函数式编程术语?
编辑:到目前为止,一些很好的答案,在猫身上挖掘更多,我发现
所以我现在看到 scalazAlt
和 haskell与 catAlternative
不太一样Alternative
。更有趣的是SemigroupK
(Plus
根据猫文档在 scalaz 中调用)。
所以我们可以说这种行为是由一个类型表现出来的,如果没有一个半群作为它的内部类型,你就不能定义一个半群(因为我们可能会说 scalazAlt
和 haskellAlternative
是这种类型的半群)?
scala - Scala 缺少扩展函数的参数类型匿名函数的参数类型必须是完全已知的。(SLS 8.5)
我有以下片段需要完成分配。为了完成任务,我必须正确替换评论/*fulfill ...*/
。但是我尽力了,我仍然得到一个
扩展函数缺少参数类型匿名函数的参数类型必须是完全已知的。(SLS 8.5)错误。
我发现与此错误相关的类似问题。但是,我无法为这些答案的特殊问题找到解决方案。
所以目标是检查事件是否满足属性。
我很高兴每一个提示。
这是我需要完成的代码:
scala - Scala 的“部分函数”概念和 F# 中的“.orElse”方法
function
在 Scala 中有一个“部分函数”的概念,它与 F# 的关键字允许我实现的非常相似。然而,Scala 的部分函数也允许通过orElse
如下所示的方法进行组合:
我需要知道是否有办法在 F# 中实现相同的合成功能。
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
scala - 组合部分函数以减少代码长度
我想以特定方式编写函数以减少代码长度
例如像这样组成一个简单的 add 函数:
这将非常有用,因此我不必每次都将a和b作为参数传递。
有没有办法在 Scala 中做到这一点?
scala - Akka Typed 中具有详尽模式匹配的类型安全状态
我开始使用 Akka Typed 来对我的行为进行详尽的模式匹配,这对于每个参与者的面向外部的契约非常有用。但是,如果参与者是状态机,则不同的状态很可能具有特定于状态的命令。
我可以将特定于状态的命令隐藏为整个命令的私有成员,如下所示:
但是,我的两种状态accumulating
又emitting
不得不处理彼此的命令。我可以使用.receivePartial
或包含一个包罗万象的
在这两种情况下,我都失去了详尽的模式匹配,以确保我正确处理我的状态。
我可以进一步细化命令:
有了这个我可以定义Behavior[Accumulating]
两者Behavior[Emitting]
都是Behavior[Command]
,但问题是任何一种行为都无法转换到另一个,因为两者都必须返回自己的类型。
我尝试了各种排列但无济于事,.widen
并.narrow
意识到我真正需要的是一种将 a 定义Behavior
为的方法
wherehandler
可以让我对窄类型进行详尽的检查,V
并且任何消息T
都V
将返回Behaviors.unhandled
。我似乎无法让这些类型工作以实现这样的功能。
scala - 为什么提供部分函数来映射在运行时抛出而不是给出编译错误?
抱歉,如果这很明显,但我是 scala 的新手,并且使用以下代码出现了两个意外行为:
1) 我本来希望得到一个字符串不变且数字增加 1 的集合,但我得到了一个错误。
2)我相信case i: Int => i + 1
语法代表了为 Ints 定义的部分函数。但似乎 map 需要一个总函数,那为什么还要编译呢?编译器帮助我不是更好吗?将运行时异常转移到编译时异常总是更好。
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")
案例的数量和案例本身可能会发生变化,因此代码应该能够处理这些变化。
scala - 理解部分函数中的“case”关键字
我是 Scala 的新手,我正在尝试解码它的结构,我了解了模式匹配,语法类似于 Java switch 语句
这里的代码非常明显且可读。我遇到了部分功能,它们非常明显并且很清楚它们是什么
偏函数是一个函数,它不能为它可以给出的每个可能的输入值提供答案。
我感到困惑的是case
在这样的部分函数的主体中使用:
我不明白如何case
在没有match
语句的情况下使用,Scala 如何解释它,它是如何读取的,它是一个方法、一个类还是另一个构造?,我可以case
在没有match
语句的情况下使用哪些其他方式
编辑:
我试图玩弄这个案例,但仍然没有得到它。例如
这是如何运作的?
尝试这样做会出错
不匹配的大小写是否在偏函数之外的其他任何地方使用?