Опанувати технологію абстракції даних в мовах функціонального програмування.
Реалізувати програму обробки раціональних та комплексних чисел мовами функціонального програмування,
представивши ці числа конструкціями типу «пара»
";(1/4)x + (1/7)x + 17 = x
;x = 17/(1 - (1/4+1/7))
(define (numer x) (car x));чисельник
(define (denom x) (cdr x)) ;знаменник
(define (make-rat n d) (cons n d)) ; створення пари
(define(print-rat x) ; друк пари
(newline)
(display (numer x))
(display "/")
(display (denom x)))
(define (add-rat x y)
(make-rat (+ (* (numer x) (denom y)
)
(* (numer y) (denom x)
)
)
(* (denom x) (denom y)
)
)
)
(define (div-rat x y)
(make-rat (* (numer x) (denom y))
(* (denom x) (numer y))))
(define (sub-rat x y)
(make-rat (- (* (numer x) (denom y))
(* (numer y) (denom x)))
(* (denom x) (denom y))))
(define (solve-task x y z)
(div-rat (make-rat z 1) (sub-rat (make-rat 1 1) (add-rat x y)))
)
(define fraction1 (make-rat 1 4) )
(define fraction2 (make-rat 1 7) )
(display "Відповідь")
(define solution (solve-task fraction1 fraction2 17))
(print-rat solution)
(newline)
(display (/ (numer solution) (denom solution)))
"
"(define (make-from-real-imag x y)
(cond
((> y 0) (list (string-append (number->string x) " " "+" " " (number->string y) "i")))
((< y 0) (list (string-append (number->string x) " " "-" " " (number->string (- 0 y)) "i")))
(else (list (string-append (number->string x)))))
)
(define (my-map func x y)
(if (null? (cdr x))
(list(func (car x) (car y)))
(cons (func (car x) (car y)) (my-map func (cdr x) (cdr y))))
)
(define list1 '(1 2 3 4))
(define list2 '(-5 6 7 -8))
(define complex-list (my-map make-from-real-imag list1 list2))
(display complex-list)
"
Вивчення технології абстракції даних у функціональному програмуванні дозволило успішно реалізувати програму для обробки раціональних та комплексних чисел,
представивши їх конструкціями типу "пара". Це відкрило нові можливості для ефективної роботи з даними та розширило розуміння абстракції в мовах програмування,
сприяючи розвитку навичок у функціональному парадигмі.