План:

  • Увод
  • Аритметични операции, if, define
  • let, cond
  • cons, car, cdr


Интерактивна сесия: REPL.it


Задача 1: Да се напише функция, която намира корените на квадратно уравнение.

; solve a*x^2 + b*x + c = 0
(define (solve a b c)
  (if (= a 0)
      (if (= b 0)
          (if (= c 0)
              "every x"
              "no roots")
          (/ (- c) b))
      (let ((d (- (* b b)
                  (* 4 a c))))
        (cond ((< d 0) "no roots")
              ((= d 0) (/ (- b) (* 2 a)))
              (else (cons
                      (/ (- (- b) (sqrt d))
                         (* 2 a))
                      (/ (+ (- b) (sqrt d))
                         (* 2 a))))))))


Last modified: Friday, 21 October 2016, 3:08 PM