问题标签 [continuation]
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.
python - 如何优雅地打断长长的弦
看,我已经看到了这个网站上提供的许多答案,这些答案涉及我的问题的各个方面。[上述] 答案通常提供已经存在的示例,这些示例太基本而无济于事 - 至少对我而言。但是,嘿,也许我过于复杂了。
这是原始的长线:
这是我实施“长线延续”礼节的尝试(如我在此处找到的 2007 年 pycon 讲义所述):
我的尝试 (a) 是否会被解析器正确解释和/或 (b) 是否会被任何有帮助的贡献者做得更“漂亮”或更高效?谢谢你。
haskell - callCC 是如何用严格的函数式语言实现的?
考虑下面的 Haskell 函数示例quux
以及延续 monad 和 的定义callCC
。
据我了解这个例子。do 块可以被认为是
我们可以从它的定义中k
看出\a -> cont $ \_ -> h a
,在上面我们已经\x -> runCont ((\_ -> return 25) x) c
被传入了被下划线忽略的参数。最终,它return 25
被有效地“忽略”了,因为从未使用下划线参数,因此从惰性评估中它从未被评估过。
据我所知,这种实现从callCC
根本上依赖于惰性求值。这callCC
将如何在严格(非惰性)函数式语言中完成?
c# - C# await 延续会创建新线程吗?
正如问题所说。我想知道简单地调用await
代码是否有可能创建一个新线程。
让我们假设它在控制台应用程序期间。
command-line - 什么是 Redis 命令行 (redis-cli) 延续字符?
我正在尝试在 lua 中构建一个 redis“存储过程”,当其中一个映射字段更改时,它将更新键值存储,并且当所述值更改时,还将从另一个键中提取值。我已经构建了这个 lua(redis) 脚本并且它可以工作。
但是我发现当我尝试将它输入到 redis-cli 时,它会抱怨,除非我将脚本的所有行连接到一个长行中。redis-cli(?)肯定有一个“延续字符”,但我找不到它。
有人知道 redis-cli 的延续字符吗?
format - Fortran:两行以上的 FORMAT 语句
我有一个旧的 Fortran 77 代码,我想在 F90 编译器中运行它,我的目标是尽可能少地更改代码。它工作得很好,但我对代码中的格式语句有一些问题。而且我不明白有什么问题。我使用 Eclipse 和 gfortran。我使用自由形式。
问题 1
这编译得很好:
这不编译
错误是
P 描述符在 (1) 处的格式字符串中需要前导比例因子
(错误是从德语翻译过来的,可能与英语中的单词不完全相同)怎么了?
问题2
这也编译得很好:
如果我在最后一个代码中添加更多代码:
它不再编译了。错误是:
P 在 (1) 处的格式字符串 * 中预期的编辑描述符
而 (1) 位于右括号之后的第三行。
*我不确定“格式字符串”的翻译,因为我的控制台是德语的。
那里有什么问题?
haskell - Trying to apply CPS to an interpreter
I'm trying to use CPS to simplify control-flow implementation in my Python interpreter. Specifically, when implementing return
/break
/continue
, I have to store state and unwind manually, which is tedious. I've read that it's extraordinarily tricky to implement exception handling in this way. What I want is for each eval
function to be able to direct control flow to either the next instruction, or to a different instruction entirely.
Some people with more experience than me suggested looking into CPS as a way to deal with this properly. I really like how it simplifies control flow in the interpreter, but I'm not sure how much I need to actually do in order to accomplish this.
Do I need to run a CPS transform on the AST? Should I lower this AST into a lower-level IR that is smaller and then transform that?
Do I need to update the evaluator to accept the success continuation everywhere? (I'm assuming so).
I think I generally understand the CPS transform: the goal is to thread the continuation through the entire AST, including all expressions.
I'm also a bit confused where the Cont
monad fits in here, as the host language is Haskell.
Edit: here's a condensed version of the AST in question. It is a 1-1 mapping of Python statements, expressions, and built-in values.
To evaluate statements, I use eval
:
To evaluate expressions, I use evalExpr
:
What motivated the whole thing was the shenanigans required for implementing break. The break definition is reasonable, but what it does to the while definition is a bit much:
I am sure there are more simplifications that can be done here, but the core problem is one of stuffing state somewhere and manually winding out. I'm hoping that CPS will let me stuff book-keeping (like loop exit points) into state and just use those when I need them.
I dislike the split between statements and expressions and worry it might make the CPS transform more work.
ruby - Sinatra 错误 - 跨线程调用延续
我对 Ruby 完全陌生,所以我的问题可能有一个非常简单的答案。但是,我在stackoverflow上找不到答案。我有以下非常简单的 Sinatra 应用程序:
西纳特拉开始:
并提供第一个请求:
但在第二个请求中失败并出现错误:
RuntimeError - 跨线程调用的延续:
显然,我缺少一些基本的东西。请指教。
f# - Mono 上的 F# 尾调用优化问题
我对单声道上的 F# 有疑问。我在我的大学做这门函数式编程课程。在课程中我们使用 F#,我使用 Xamarin 作为我的编辑器。
问题是我们上了一堂关于尾递归的课,作为提高效率的工具。但是当你不能写你的函数尾递归时,我们不得不使用连续的,这样我们使用堆而不是堆栈。
这似乎不适用于带有 F# 3.1 的单声道 3.10.0,我得到一个 System.StackOverflowException。这应该是不可能得到的,因为连续应该使用堆。
python - 用续行注释
我有这段代码要评论,但内联评论不起作用。我不确定这里适用什么 PEP8 指南。建议?