码迷,mamicode.com
首页 > 其他好文 > 详细

cons、car与cdr的实现

时间:2018-02-10 23:28:08      阅读:443      评论:0      收藏:0      [点我收藏+]

标签:func   col   pos   span   cti   icp   fine   style   imp   

以前读 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

 

cons、car与cdr的实现

标签:func   col   pos   span   cti   icp   fine   style   imp   

原文地址:https://www.cnblogs.com/tdkihrr/p/8439914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!