C++ 对比 Scheme(Lisp)
来源:互联网 发布:java程序员的浪漫代码 编辑:程序博客网 时间:2024/05/17 02:08
看了一下SICP的第一课 MIT 6.001 86年版的,用Scheme来解决实际问题确实是一种非常具有“美学”的语言。
C++11 也开始支持lambda表达式了,可以在对象或者函数里定义函数。类“Function-Orient Programming”
于是自己把第一课的例子用Scheme和C++11写了一下。
先是Lisp
(define (average x y)(/ (+ x y) 2))(define (square x)(* x x))(define (sqrt x)(define (improve guess)(average guess(/ x guess)))(define (good-enough? guess)( < (abs (- (square guess) x) ).001))(define (try guess)(if (good-enough? guess)guess(try (improve guess))))(try 1))
然后是C++11
double minsqrt(double x){auto improve = [=](double guess){return average(guess, x / guess);};auto good_enough = [=](double guess){return abs(guess * guess - x) < 0.001;};std::function<double(double)> mytry = [=, &mytry](double guess){if (good_enough(guess))return guess;elsereturn mytry(improve(guess));};return mytry(1);}
好像看起来差不多,但是C++的语法上还是体现了太多的语言细节,而Scheme看起来更加“抽象”。你只需要关注解决问题方法,而不是去在意一大堆语法上的细节。
比如 std::function<double(double)> 这个相当不灵活也不美观。在c++11 的编译器上Auto关键字还没办法支持定义“递归式”的lambda表达式。我觉得这个很有必要支持一下!
不过C++ 毕竟是强大的生产工具,用C++自己“实现”一个LISP解释器也是可以的。
0 0
- C++ 对比 Scheme(Lisp)
- lisp方言--scheme
- lisp-Scheme学习笔记
- scheme(Lisp)资源
- SICP1.3 MIT(PLT) Scheme实现(Lisp)
- 几个免费的Scheme(Lisp)解释器
- 几个免费的Scheme(Lisp)解释器
- 小语种介绍:LISP/Scheme
- 小语种介绍:LISP/Scheme
- 小语种介绍:LISP/Scheme
- Like Lisp Scheme SBM Crusher
- scheme和lisp资源分享
- LISP:Scheme的一些资源及其他!
- Ubuntu下安装Scheme/Lisp解释器
- 霍纳规则(C/C++,Scheme)
- java8 Stream和Lisp对比
- C++&Lisp比较
- JavaScript = C + Lisp
- Shader学习之案例—《镜子1》
- HttpUrlConnection+Get请求
- 有关/etc/sysconfig/network-scripts/ifcfg-eth0
- jquery的中文乱码问题
- Linux下php扩展安装
- C++ 对比 Scheme(Lisp)
- 杂项-20160826
- 关于TabActivity相关使用
- 剑指offer34_第一个只出现一次的字符
- 函数指针与指针函数
- 两个队列实现一个栈
- MVP的简单理解
- 用C语言实现将一个int类型的数的每一个字节转换为8位2进制数的表示!!
- 不得不看的Java代码性能优化总结