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. Да се дефинира потокът nats от естествени числа 0,1,2,3,4,5,6...
  5. Да се дефинира потокът fibs от числа на Фибоначи 0,1,1,2,3,5,8,...
  6. Да се дефинира функция от по-висок ред (combine-streams op s1 s2), която комбинира два потока, използвайки бинарната операция op.
  7. Да се дефинират потоците nats и fibs с помощта на combine-streams
  8. Да се дефинират потоците fact от факториели 0!,1!,2!,3!,...
  9. Да се дефинира функция (map-stream f s), която прилага функцията f над всички елементи на потока s. Опитайте се да дефинирате map-stream чрез combine-streams.
  10. Да се дефинира потокът (pows x) от степени на x: 1,x,x2,x3,...
  11. Да се дефинира потокът (exp-series x) $$1,x,\frac{x^2}{2!},\frac{x^3}{3!},...$$
  12. Да се дефинира функция от по-висок ред (scan-stream op nv s), която намира потока b0, b1, b2, b3,... където bi = (accumulate op nv (first-n s i)). Направете директна дефиниция
  13. Да се дефинира потокът (exp-sums x) от частични суми на реда exp-series.
Последно модифициране: събота, 12 ноември 2011, 17:38