当前位置: 代码迷 >> 综合 >> C++ 对比 Scheme(Lisp)
  详细解决方案

C++ 对比 Scheme(Lisp)

热度:24   发布时间:2024-01-20 02:33:06.0

看了一下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
  相关解决方案