1. Да се дефинират операциите за работа с потоци cons-stream, head, tail
    Решение:
    Използваме специалната форма define-macro във варианта Pretty Big на DrScheme:
    (define-macro cons-stream (lambda (h t) (list 'cons h (list 'lambda '() t))))
    (define head car)
    (define (tail s) ((cdr s)))
    
  2. Да се дефинират потока от единици ones
  3. Да се дефинира функция (first-n n s), която връща списък от първите n елемента на даден поток
  4. Да се дефинира потока от естествени числа 0,1,2,...
  5. Да се дефинира функция (add-streams s1 s2), която събира поелементно два потока
    Да се дефинира функция от по-висок ред (combine-streams op s1 s2), която комбинира два потока, използвайки бинарната операция op.
  6. Да се дефинират потоците от естествени числа и числа на Фибоначи с използване на функцията add-streams.
Хаскел:

Инсталирайте си WinHugs и експериментирайте с дефинициите

x = 2
myabs x = if x>0 then x else -x
myabs2 x
| x > 0 = x
| otherwise = -x

Напишете програма solve a b c, която намира някой корен на уравнението ax2 + bx + c = 0 или връща 0 ако корен няма.
Последно модифициране: събота, 12 ноември 2011, 17:38