||
lisp/scheme据说是每个程序员在死之前必须要尝试的程序语言,也有人说它是上帝的编程语言。
一般人看到lisp满屏的括弧就放弃了。
我受到RMS的蛊惑, 2015年开始学一点lisp/scheme的东西,
偶尔闲来无事,喜欢捣鼓一点lisp/scheme。 lisp强调递归的重要性,不直接提供循环结构,因为循环可看作递归的一个特例。
lisp是仅次于fortran的第二老程序语言, 主要的强项是写解析器、编译器、符号计算相关的程序,用来做数值计算不是它的强项。 下面是一个二分法求函数的根的一个guile小程序, 纯为练练手, 每次写lisp程序都很快乐
#!/usr/bin/guile
!#
(define (root_finder f x1 x2)
(let ((tmp (/ (+ x1 x2) 2)))
(if (<= (* (f tmp) (f x1)) 0) (set! x2 tmp) (set! x1 tmp))
(display tmp)
(newline)
(if (< (abs (- x1 x2)) 0.001) tmp (root_finder f x1 x2) )
) )
(define (myfun x) (* (- x 1) (- x 2)))
(display (root_finder myfun 1.8 2.2))
(newline)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-23 21:17
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社