标签: interaction-nets

互动网是否通常会留下成堆的冗余粉丝?

我正在为交互网编译lambda演算术语,以便使用Lamping的抽象算法来评估它们.为了测试我的实现,我使用了这个教堂号码除法功能:

div = (? a b c d . (b (? e . (e d)) (a (b (? e f g . (e (? h . (f h g)))) (? e . e) (? e f . (f (c e)))) (b (? e f . e) (? e . e) (? e . e)))))
Run Code Online (Sandbox Code Playgroud)

除以4(即(? k . (div k k)) (? f x . (f (f (f (f x)))))),我得到这个网:

在此输入图像描述

(抱歉可怕的渲染.?是一个lambda,R是root,D是粉丝,e是橡皮擦.) …

lambda haskell functional-programming lambda-calculus interaction-nets

14
推荐指数
1
解决办法
328
查看次数

您如何从 lambda 术语转换为交互网络?

这篇论文中,作者建议在 lambda 术语之间进行翻译:

data Term = Zero | Succ Term | App Term Term | Lam Term
Run Code Online (Sandbox Code Playgroud)

和交互网络:

data Net = -- if I understood correctly
    Apply Net Net Net 
    | Abstract Net Net Net
    | Delete Net Net Int
    | Duplicate Net Net Net Int
    | Erase Net
Run Code Online (Sandbox Code Playgroud)

不幸的是我无法理解他的编译算法。似乎缺少实际的算法,我不知道他对第三页上的图像是什么意思。我已经尝试通过查看已发布的源代码来理解它,但是作者使用他自己的图形重写 DSL 来定义它,所以我必须先学习它。翻译是如何作为普通 Haskell 函数实现的?

haskell functional-programming lambda-calculus interaction-nets

5
推荐指数
1
解决办法
432
查看次数