问题标签 [evaluation-strategy]
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.
computer-vision - 如何计算图像分割中的平均 IU 分数?
如何计算本文中的平均IU(平均交叉联合)分数?
朗、乔纳森、埃文·谢尔哈默和特雷弗·达雷尔。“用于语义分割的全卷积网络。”
scheme - 使用 Scheme 中的函数时遇到问题
所以我试图理解这段代码,在盯着它看了太久之后,我决定在这里问是否有人可以帮助我理解它是如何以及为什么工作的
然后按名称调用该函数,其值为:
所以我的主要问题是我看不到letrec
结束的地方。另一件事是我没有得到一个列表,那么我应该在第 3 行引用的列表中的第 4 个元素是什么?
python - 计算 def f(x) 评估次数的简单方法?
我正在尝试计算f(x)
评估的次数,而不必过多地更改我的代码,看起来应该不是很困难,但我似乎无法弄清楚。
lambda-calculus - lambda演算,正规顺序,正规形式,
在 lambda 演算中,如果一个项具有范式,则常规降阶策略总是会产生它。
我只是想知道如何严格证明上述命题?
lambda-calculus - 按名称呼叫与正常顺序
我知道这个话题已经讨论过好几次了,但我仍然不清楚。我已经阅读了这个问题applicative-order/call-by-value 和 normal-order/call-by-name 的区别,我想一劳永逸地澄清一些事情:
点名
按照正常顺序,但在抽象内部不执行任何缩减。例如,根据该策略,λx.(λx.x)x 是范式,尽管它包含 redex (λx.x)x。
在按名称调用中,表达式 λx.(λx.x)x 被称为正常形式;这是因为“(λx.x)x”被认为是身体(因为λ的范围尽可能向右延伸)?等等,如果我应用正常顺序,结果会是什么?
evaluation - 我如何误解按需评估?
首先,我从来没有研究过这些东西或任何东西,所以我可能会问一些非常愚蠢的问题,我很抱歉,但请放轻松:)
我正在使用按需调用评估来实现 lambda 演算。我正在尝试关注有关该主题的这篇论文,其中相关位似乎是第 28 页上描述的自然语义。
无论如何,我对这种评估策略的不理解是,据我所知,实际替换仅在评估变量时发生。抽象对自己进行评估,因为这些是值,并且应用程序只会将新条目添加到缓存中。
但考虑到这一点,一个人究竟如何评估一个像
(λx.λy.x y) λa.a
根据链接论文中描述的自然语义,第一个评估步骤是将条目添加x -> λa.a
到缓存中,并在应用程序的 lhs 上评估抽象主体,即λy.x y
. 但这是一个值,所以评估结束。此时我们有一个未关闭的术语和一个非空堆。虽然我们确切地知道这个术语应该评估为λy.(λa.a) y
。
我有什么误解?这在实际使用这种评估策略的语言中是如何工作的?
javascript - 如何在 Typescript 中进行非短路条件?
如何在打字稿中以非短路方式评估条件?打字稿不允许&
或|
布尔类型。我需要非短路检查的原因是我在函数中调用 showErrors isValueValid
。
鉴于此功能
然后在我的情况下
虽然我可以做到这一点
但我觉得在 isValueValid 函数中调用它。实际上,我总是想在出现错误时默认调用显示错误。
c++ - 什么是 C++ 元函数(例如 std::conditional)的求值策略(eager、lazy、...)?
C++14 草案 n4140 读取
T
应为枚举类型
为template <class T> struct underlying_type
.
写作有多糟糕
什么时候T
可以是任意类型?我会踏上 UB 并且编译器会删除我的 $HOME(因为语言律师说“在 UB 下任何事情都可能发生”)?
python - Python中的非严格按名称参数?
问题
有没有办法将函数参数声明为非严格的(按名称传递)?
如果这不能直接实现:是否有任何辅助函数或装饰器可以帮助我实现类似的目标?
具体例子
这是一个可以试验的小玩具示例。
假设我想构建一个小型解析器组合器库,它可以处理以下带括号的算术表达式的经典语法(1
为简单起见,将数字替换为单个文字值):
假设我将解析器组合器定义为一个对象,该对象具有一个方法,该方法parse
可以获取令牌列表、当前位置,并且要么引发解析错误,要么返回结果和新位置。我可以很好地定义一个ParserCombinator
提供+
(连接)和|
(替代)的基类。然后我可以定义接受常量字符串的解析器组合器,并实现+
and |
:
到目前为止,一切都很好。然而,因为语法的非终结符号是以相互递归的方式定义的,我不能急切地展开所有可能的解析器组合树,我必须使用解析器组合器的工厂,并将它们包装成这样的东西:
这确实允许我以非常接近 EBNF 的方式写下语法:
它实际上有效:
但是,p(lambda: ...)
每一行都有些烦人。有没有一些惯用的方法来摆脱它?如果有人能以某种方式通过“按名称”规则的整个 RHS,而不触发对无限相互递归的急切评估,那就太好了。
我试过的
我已经检查了核心语言中可用的内容:似乎只有if
,and
并且or
可以“短路”,如果我错了,请纠正我。
我试过看看其他非玩具示例库是如何做到这一点的。
例如, funcparserlib 使用显式前向声明来避免相互递归(查看 github README.md 示例代码中的
forward_decl
andvalue.define
部分)。使用
parsec.py
一些特殊的@generate
的装饰器,并且似乎使用协程进行单子解析。这一切都很好,但我的目标是了解我对 Python 中可用的基本评估策略有哪些选择。
我还发现了类似的东西lazy_object_proxy.Proxy
,但它似乎并没有帮助以更简洁的方式实例化这些对象。
那么,有没有更好的方法来按名称传递参数并避免相互递归定义的值的爆炸?
algorithmic-trading - MetaTrader4 中的 MACD 示例智能交易系统不起作用
我想使用 MACD 示例 EA(我指的是 MetaTrader 中默认提供的那个)来查看 MACD 参数是否有效。我把我想要的参数放在这部分,而不是12,26,9
:
但是我遇到了一个问题。当我开始使用“策略中心”进行回测时,我发现交易订单没有按预期执行。实际上,我希望它们在信号线和 MACD 线之间的“交叉”中执行。但它没有发生。我曾尝试使用 0MQ 将交易订单从 Python 发送到 MetaTrader,如果我必须学习 MQL 来编写智能交易系统,我很绝望。我相信这个问题有一个快速的解决方案。感谢您的关注,并提前非常感谢您的友好回答。