在C#5.0中是否可以使用异步实现阴阳之谜?

在C#5.0中是否可以使用异步实现阴阳之谜?,c#,.net,asynchronous,scheme,c#-5.0,C#,.net,Asynchronous,Scheme,C# 5.0,在方案中实施的谜题如下: (let* ((yin ((lambda (cc) (display #\@) cc) (call-with-current-continuation (lambda (c) c)))) (yang ((lambda (cc) (display #\*) cc) (call-with-current-continuation (lambda (c) c))))) (yin yang)) 拼图的目的是计算并理解此代码的输出 我想知道是否有可能使

在方案中实施的谜题如下:

(let* ((yin
     ((lambda (cc) (display #\@) cc) (call-with-current-continuation (lambda (c) c))))
   (yang
     ((lambda (cc) (display #\*) cc) (call-with-current-continuation (lambda (c) c)))))
(yin yang))
拼图的目的是计算并理解此代码的输出

我想知道是否有可能使用C#5.0新的异步CPS特性实现具有相同语义的代码


我很难理解的一点是,这个谜题与call/cc一样依赖let*的语义。我不知道如何在C#中正确地表达这种相互作用。

CPS可以完全摆脱call/cc,因此您完全可以在C#中通过手动CPS实现它。对C#的自动CPS加密一无所知,我不能说这个功能是否会自动完成。但是,名称中的“async”让我停顿了一下。您给出的问题与此表达式的同步计算明确相关

我的观点是:我认为将其翻译成C#并不是理解这一点的最快方式

最后:let*是嵌套绑定的简写。因此,您可以将其改写为:

(let ([yin ...])
  (let ([yang ...])
     ...))

。。。要想摆脱这个习惯*。在你的例子中,因为“阳”不依赖于“阴”,所以效果就是排序。也就是说,在“阴”绑定的右侧捕获的延续尚未评估“阳”绑定。

CPS可以完全摆脱call/cc,因此您完全可以在C中手动实现它。对C#的自动CPS加密一无所知,我不能说这个功能是否会自动完成。但是,名称中的“async”让我停顿了一下。您给出的问题与此表达式的同步计算明确相关

我的观点是:我认为将其翻译成C#并不是理解这一点的最快方式

最后:let*是嵌套绑定的简写。因此,您可以将其改写为:

(let ([yin ...])
  (let ([yang ...])
     ...))

。。。要想摆脱这个习惯*。在你的例子中,因为“阳”不依赖于“阴”,所以效果就是排序。也就是说,在“阴”绑定右侧捕获的延续还没有评估“阳”绑定。

我还看不懂Scheme,你能给我们这个谜题的另一个实现(伪?)吗?我对这个问题的回答可能会有很大帮助。我还看不懂Scheme,你能给我们另一个谜题的实现吗(伪?),我对这个问题的回答可能会有很大帮助。