We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The text was updated successfully, but these errors were encountered:
可能的解决方法:引入 Elide',用于区分 annihilate / commute 两种规约
Elide'
Lambda(@x, #y) >> Dup(@u, @v) => @x -> Elide'(#x1, #x2) /* 如果 @x 是 Lambda-like 的参数 */ #y -> Dup(@y1, @y2) @u <- Lambda(@x1, #y1) @v <- Lambda(@x2, #y2) Elide'(#x, #y) >> Dup(@u, @v) => #x -> @u, #y -> @v Elide(#x, #y) >> Dup(@u, @v) => #x -> Dup(@x1, @x2), #y -> Dup(@y1, @y2), @u <- Elide(#x1, #y1), @v <- Elide(#x2, #y2)
Lambda-like 参数指签名为 out Func(out x, in ...) 中的 out 参数,遇到 Lambda-like 参数时,构造 Elide',否则构造 Elide
out Func(out x, in ...)
out
Elide
正确性待证明
跑了一下发现会导致规约无限膨胀,可能还需要再研究研究
Sorry, something went wrong.
演算了一下,发现即使去掉 lambda-like 函数,语言的表达能力也不会减弱
对于每个函数,可以额外定义一个 boxed agent,让 boxed agent 与 beta-reduction 的交互中生成 function agent,这样可以模拟 lambda 的效果
如果去掉 lambda-like 的函数,那么 Elide 与 Nothing 就不必要存在了
No branches or pull requests
Questions
The text was updated successfully, but these errors were encountered: