Упражнение за списъци, функции от високо ниво върху списъци, конструкция на функции, акумулиране на не-числа


  • (max-fun f) -> $$\lambda a b. max \{f(x)|x \in [a,b] \cap N\}$$
    (с accumulate за списъци)
  • reverse с append и с акумулатор
  • Композиция на списък от функции
    • директно
    • с accumulate, натрупващ числа
    • с accumulate, натрупващ функции
  • Замяна на x с y в списък чрез accumulate
  • Проверка за сортираност на списък
  • map: дефиниция и прости примери
  • По спиък от двойки - списък с по-големите им елементи
  • По списък от двойки - списък от сумите на елементите им
  • По списък от списъци от числа - списък от сума на елементите на подсписъците
  • По списък от функции l - $$\lambda x.max\{f(x)|f \in l\}$$
Домашно


Задача. Да се реализира функцията (union l1 l2), намираща обединението на две множества, представени чрез списъци, като се изпозлва функцията accumulate за списъци.

Задача. Да се дефинира функцията (even-more-fun l), където l е списък от функции. Функцията построява функция h(x), намираща средно-аритметичното на стойностите на функциите от l в точката x. Желателно е да се използват map и accumulate.

Пример: ( (even-more-fun (list sq sqrt)) 4) -> 9 (= $$\frac {16+2}{2}$$)


Задача. Даден е списък от двойки от числа и двуместна функция. Да се дефинира функция (apply-couples l f), намираща списък, чиито елементи са стойностите на функцията върху двойкте от  l.

Пример: (apply-couples (list (cons 1 2) (cons 100 0))  * ) -> (2 0)

Задача. При условията на горната задача да се намери максималното от тези числа.

Примери:

(max-apply-couples (list (cons 1 2) (cons 100 0))  * ) -> 2

(max-apply-couples (list (cons 1 2) (cons 100 0))  + ) -> 100
Последно модифициране: събота, 12 ноември 2011, 17:38