conscar与cdr的实现

Posted tdkihrr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了conscar与cdr的实现相关的知识,希望对你有一定的参考价值。

以前读 SICP ,虽然很有趣,但并没有讲 conscarcdr是怎样实现的。今天读 the implementation of functional programming languages ,里面讲到了如何用lambda实现这三个函数,这里给出用 scheme 和 javascript 改写的版本。

Scheme

(define (cons a b)
  (lambda (f) (f a b)))

(define (car c)
  (c (lambda (a b) a)))

(define (cdr c)
  (c (lambda (a b) b))

命令行里测试下,OK:

> (car (cons 1 2))
1
> (cdr (cons 2 3))
3

Javascript

var cons = function(a, b) { 
    return function(f) { 
        return f(a, b) 
    } 
}

var car  = function(c) { 
    return c(function(a, b) { 
        return a 
    })
}

var cdr  = function(c) { 
    return c(function(a, b) { 
        return b
    })
}

命令行里测试下,OK:

>> car(cdr(cons(1, cons(2, 3))))
>> 2

 

以上是关于conscar与cdr的实现的主要内容,如果未能解决你的问题,请参考以下文章

CDR不显示缩略图怎么办? CDR不显示缩略图的解决方法

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

cdr粗糙笔刷怎么用

cdr手绘工具的操作技巧 cdr手绘工具的操作窍门

java 代码片段

cdr9中互动式透明工具渐变怎么让中间颜色轻两边重