【发布时间】:2016-06-21 05:14:42
【问题描述】:
Matt Might 谈论在7 lines of Scheme 中实现Lambda Calculus 解释器:
; eval takes an expression and an environment to a value
(define (eval e env) (cond
((symbol? e) (cadr (assq e env)))
((eq? (car e) 'λ) (cons e env))
(else (apply (eval (car e) env) (eval (cadr e) env)))))
; apply takes a function and an argument to a value
(define (apply f x)
(eval (cddr (car f)) (cons (list (cadr (car f)) x) (cdr f))))
; read and parse stdin, then evaluate:
(display (eval (read) '())) (newline)
现在这不是Simply Typed Lambda Calculus。在core of Haskell 中,有一个Intermediate Language 与System F 非常相似。一些(包括Simon Peyton Jones)have called this 是Simply Typed Lambda Calculus 的实现。
我的问题是:扩展无类型 Lambda 演算实现以涵盖简单类型 Lambda 演算需要什么?
【问题讨论】:
-
系统 F 不是 STLC。
-
Simon Peyton Jones 从未将 System F 称为简单类型 lambda 演算的实现。此外,GHC 的中间语言具有 System F 所缺乏的几个重要特性。其中最突出的可能是一般递归(
Rec和letrec形式)。
标签: haskell scheme lambda-calculus system-f