来自 lambda 演算的示例汇编/机器指令

问题描述

我正在学习一些 lambda 演算,我很好奇的一件事是如何在指令中实际应用完全抽象的函数。让我们以下面的例子为例,我允许使用小的自然数(作为给定)和 TRUE FALSE 定义。

例如,让我们使用以下代码,其计算结果应为 5

# using python for the example but anything would suffice
TRUE = lambda x: lambda y: x      # T = λab.a
FALSE = lambda x: lambda y: y     # F = λab.b
TRUE(5)(2)                        # T('5')('2')

如何在类似 lambda 演算的指令中实现它来评估它?我想到的一件事是“un-lambda-ify”它,所以它只是出现如下:

// uncurried
int TRUE(int x,int y) {
    return x;
}
int FALSE(int x,int y) {
    return y;
}
TRUE(2,5);

可能会得出以下结论:

SYS_EXIT = 60
.globl _start

TRUE:                      # faking a C calling convention
    mov %edi,%eax
    ret

_start:
    mov $5,%edi
    mov $2,%esi
    call TRUE
    mov %eax,%edi
    mov $SYS_EXIT,%eax
    syscall

这是如何完成的,或者对函数式/类似 lambda 的语言如何编译为指令的更深入的解释是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)