问题标签 [forall]
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.
loops - 在 ST monad 内循环
我正在尝试在 Haskell 上实现插入排序Data.Array.ST
,并使用一元比较函数。即,sortByM :: (Monad m, Ix i, Enum i, Eq i) => (e -> e -> Ordering) -> STArray s i e -> m (ST s ())
。这是我的代码,用于上下文:
据我了解,我遇到的问题是loopM
' 的第一个参数应该有 type ST s i -> m (Either i (ST s ()))
,但由于runST
' 隐藏ST
内部状态的方法,fmap (mapLeft runST) . bubbleBackOnce ary
有 type (forall s'. ST s' i) -> Either i (ST s i)
。这是我第一次使用 ST,所以我不知道如何解决这个问题。此外,这是一个宠物项目,所以我试图避免依赖现有的可以简化事情的库,例如STMonadTrans。
haskell - ReifiedTraversal 中隐藏的所有量化类型
这个问题确实更笼统,因为当我问它时,我发现了如何在这种特殊情况下解决它(即使我不喜欢它),但我会在我的特定上下文中使用它。
语境:
我正在使用镜头库,我发现为“添加”遍历提供功能特别有用(从概念上讲,遍历两个原始遍历中的所有元素的遍历)。我没有找到默认实现,所以我使用Monoid
. 为了能够实现一个实例,我必须使用ReifiedTraversal
包装器,我假设它在库中正是为此目的:
我想从中提取的直接应用程序是能够为列表中的一组指定索引提供遍历。因此,底层半群是,底层半群[]
也是Traversable
。首先,我为列表中的单个索引实现了一个镜头:
剩下要做的就是将这两件事结合起来,理想地实现一个功能traversal_idxs :: [Int] -> Traversal' [a] a
问题:
当我尝试使用它时出现类型检查错误。我知道这与它的定义Traversal
中包含约束forall
量词的类型有关。为了能够使用该Monoid
实例,我需要首先具体化由lens_idx
(当然也是遍历)提供的镜头。我尝试这样做:
但这会失败并出现两个错误(实际上是同一错误的两个版本):
我知道这与定义forall f. Functor f =>
中的隐藏有关Traversal
。在写这篇文章时,我意识到以下确实有效:
因此,通过给它参数,它可以使自己f
显式,然后它可以使用它。但是,这感觉非常临时。特别是因为最初我试图在函数r_lens_idx
定义的 where 子句中构建这个内联traversal_idxs
(实际上......在定义这个内联函数的函数上,因为我真的不会经常使用它)。
所以,当然,我想我总是可以使用 lambda 抽象,但是......这真的是处理这个问题的正确方法吗?感觉就像是 hack,或者更确切地说,原始错误是类型检查器的疏忽。
oracle - Oracle 将结果集放入 FORALL 中的变量中
我有以下 plsql 块
t_mds_parents 声明为
我得到一个异常 ORA-00947:没有足够的值
我真的需要在 FORALL 循环的每次迭代中将多行的结果集放入 TABLE TYPE 的变量中。我不能在 l_mds_parents 中使用 BULK COLLECT,因为它在 FORALL 内部受到限制。是否只有使用临时表而不是表变量的解决方案?
forall - 具有持续作用的 PDDL forall 效果
我既使用持续动作,又试图能够清除某种类型的所有元素的谓词。见下文。这可能吗?如果是这样,有人知道正确的语法吗?谢谢!
我正在运行 popf 规划器,提供的错误是:Syntax error in timed effect
.
scala - 使用 forall() 从 Scala 中的 Option[String] 中提取字符串
我不明白什么时候 forAll 处理 None 值。
当我调用函数时:
areTheyEqual(None, "hello")
this 返回 true,当我期望 this 为 false 时,因为它们不相等。请帮忙。为什么会这样?
编辑:
为了解决这个问题,我将 if 语句更改为:
if (x.nonEmpty && x.forall(_ == y))
但我仍然想知道为什么它在没有x.nonEmpty
条件的情况下返回 true。
forall - PDDL forall 与持续动作中的 when 条件
这个问题建立在前面关于 forall 子句的问题的基础上。我想用一个'when'语句来限制forall,如下所示:
这在没有“when”语句的情况下有效。当我包含“when”语句时,我收到几个错误:
提前感谢您的帮助。
oracle - oracle中FORALL中嵌套表对象的使用
我正在尝试使用 将集合中的数据插入表中FORALL
,我预计该过程会很快,但不幸的是过程相当缓慢,并且没有显示出任何重大的性能改进。
下面的代码:
上面没有产生任何令人满意的结果,只有 1300 条记录插入到表中,所用时间为 6 分钟,相反我想尝试以下列方式使用 FORALL:
期望上述代码更改将加快该过程。
尝试编译代码时出现错误:
错误(474,33):PL/SQL:ORA-00932:不一致的数据类型:预期 - 得到 -
我相信他们应该是完成这项工作的一种方式。我不是 Oracle 核心开发人员,通过在几个站点学习,我能够编写上述代码。
haskell - 如果不使用类型类约束,forall 有什么用处?
我已经阅读了 Existential Types Wikibook,它比较了使用forall
和使用小写字母来定义泛型类型。然后它说真正有用的forall
是当您将它与类型类一起使用时。也就是说,forall
使您的函数与许多遵循某个类型类的类型一起工作。
例子:
好吧,我发现了一个真正的世界用法:
你可以在这里看到它使用的源代码forall
,但没有类型类约束:
我对 Haskell 很陌生,并试图理解forall
.
variables - 如何对变量进行测试?
我在序言中有以下代码,我希望能够在变量出现时对其进行测试:
accepte_2 允许确定 NFA 是否接受字符串,我的 accepte_ / 2 和 accepte_ / 4 谓词按我的意愿工作,但我想要一个 accepte/2 谓词,它将执行以下操作:
我不想要什么:
haskell - 了解ST的量化和幻型
我正在尝试使用Test.QuickCheck.Monadic
.
该模块提供了一个线束
执行ST
-based 测试和一个函数
将任何动作提升到测试单子中。
在我的代码中,我有一个多态单子动作:
以下函数
编译失败:
但是这个
编译没有问题。
谁能解释一下?