lambda对租入计划/球拍的定义是什么?

lambda对租入计划/球拍的定义是什么?,lambda,scheme,racket,let,Lambda,Scheme,Racket,Let,今天我试图理解let如何在Scheme/Racket中的lambda演算环境中工作,但我不知道如何将let等效为lambda函数 我认为它的一般形式应该是这样的: ((lambda (p1 p2...) body) v1 v2...) #lang racket (define-syntax my-let (syntax-rules () [(_my-let ([p1 v1] [p2 v2] ...) body) ((lambda (p1 p2 ...) body) v1

今天我试图理解let如何在Scheme/Racket中的lambda演算环境中工作,但我不知道如何将let等效为lambda函数

我认为它的一般形式应该是这样的:

((lambda (p1 p2...) body) v1 v2...)
#lang racket

(define-syntax my-let
  (syntax-rules ()
    [(_my-let ([p1 v1] [p2 v2] ...) body)
     ((lambda (p1 p2 ...) body) v1 v2 ...)]))

(my-let ([x 1]
         [y 2])
  (+ x y))
但这肯定不是一个完整的函数定义

对此有没有正确/完整的定义

提前谢谢你

从中,
let
的定义是:

(define-syntax let
  (syntax-rules ()
    ((let ((name val) ...) body1 body2 ...)
      ((lambda (name ...) body1 body2 ...)
        val ...))
    ((let tag ((name val) ...) body1 body2 ...)
      ((letrec ((tag (lambda (name ...)
                       body1 body2 ...)))
        tag)
      val ...))))
你的榜样

((lambda (p1 p2 ...) body) v1 v2 ...)
到底是什么

(let ([p1 v1] [p2 v2] ...) body)
意味着

您可以将示例转换为如下宏:

((lambda (p1 p2...) body) v1 v2...)
#lang racket

(define-syntax my-let
  (syntax-rules ()
    [(_my-let ([p1 v1] [p2 v2] ...) body)
     ((lambda (p1 p2 ...) body) v1 v2 ...)]))

(my-let ([x 1]
         [y 2])
  (+ x y))
程序的结果是3