【发布时间】:2020-04-16 09:36:49
【问题描述】:
sicp中的定点实践
#+BEGIN_SRC scheme
(define tolerance 0.00001)
(define (fixed-point f first-guess)
(define (close-enough? v1 v2)
(< (abs (- v1 v2)) tolerance))
(define (try guess)
(let ((next (f guess)))
(if (close-enough? guess next)
next
(try next))))
(try first-guess))
(fixed-point cos 1.0)
#+END_SRC
#+RESULTS:
: 0.7390822985224024
参考线
(let ((next (f guess)))
我假设添加了额外的括号,并将其更改为
(let (next (f guess))
再次运行但拒绝工作
#+BEGIN_SRC scheme
(define tolerance 0.00001)
(define (fixed-point f first-guess)
(define (close-enough? v1 v2)
(< (abs (- v1 v2)) tolerance))
(define (try guess)
(let (next (f guess))
(if (close-enough? guess next)
next
(try next))))
(try first-guess))
(fixed-point cos 1.0)
#+END_SRC
#+RESULTS:
有什么问题?
【问题讨论】:
-
“我假设添加了额外的括号”。不,你不应该假设书中的代码有比需要更多(或更少)的括号。如有必要,请检查所使用的每种特殊形式的文档页面,以阐明语法。
标签: syntax scheme lisp let sicp