文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【C#】无中生有

【C#】无中生有

时间:2010-09-30  来源:K#

In Lisp, car, cdr, and cons are fundamental functions.

The cons function is used to construct lists, and the car and cdr functions are used to take them apart.

 

(define (cons x y)
(
lambda (m) (m x y)))
(define (car z)
(z (
lambda (p q) p)))
(define (cdr z)
(z (
lambda (p q) q)))

 

using System;

namespace K_Lib
{
class Program
{
static void Main()
{
var triple
= cons("A", cons("B", "C"));
var head
= car(triple);
var middle
= car(cdr(triple));
var tail
= cdr(cdr(triple));
print(head);
print(middle);
print(tail);
}

static Func<Func<dynamic, dynamic, dynamic>, dynamic> cons(dynamic hd, dynamic tl)
{
return x => x(hd, tl);
}

static dynamic car(Func<Func<dynamic, dynamic, dynamic>, dynamic> pair)
{
return pair((hd, tl) => hd);
}

static dynamic cdr(Func<Func<dynamic, dynamic, dynamic>, dynamic> pair)
{
return pair((hd, tl) => tl);
}

static void print(dynamic obj)
{
Console.WriteLine(obj);
}
}
}

 

 

cons、car、cdr共同构造了抽象数据结构:

对任意的x, y都满足

car(cons(x,y))  ->  x

cdr(cons(x,y))  ->  y

代码中的triple实际上是个Func!看cons的实现之前,还以为它是个单链表。

也就是说,从函数抽象出了数据。就好比,无形的能量转化成了有形的物质。

现在,我敢说,"我不会编程了"!看到这样的代码,我的大脑非常混沌!

只是我编程中遇到的瓶颈之一!

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载