1. Да се реализира оператор gamma, съответстващ на функция за намиране на целочислена степен на число. С помощта на оператора Y да се дефинира съответната функция за степенуване.
  2. Да се реализира оператор gamma, съответсващ на функцията намираща НОД по алгоритъма на Евклид. С помощта на оператора Y да се дефинира съответната функция за намиране на НОД.
  3. Да се реализира оператор gamma, съответстващ на функция, която пресмята броя стъпки за достигане на числото 1 започвайки от дадено число n чрез следната процедура: "ако n е нечетно, премини към 3n+1; ако n е четно, премини към n/2". С помощта на оператора Y да се дефинира съответната функция.
  4. Да се дефинира функция за сортиране на списък в нарастващ ред по избран от вас метод.
  5. Да се дефинира функция за сливане на два сортирани списъка.
  6. Да се дефинира функция, която намира броя на срещанията на даден елемент в даден списък. Може ли функцията да се дефинира чрез използване на map, filter и/или foldr?
  7. Да се дефинира accumulate чрез foldr и collect, без използване на map.
  8. Да се дефинира accumulate-i чрез използване на foldl.
  9. Да се дефинира list-ref чрез използване на foldr. Упътване: подгответе си списък с числата от 0 до n и го комбинирайте по подходящ начин със списъка, подаден като параметър. Извикайте foldr с подходяща операция.
  10. Да се дефинира member чрез използване на foldr. Упътване: използвайте помощна функция, която връща двойка от резултати: дали търсенето е било успешно и копие на списъка, който  вече е обработен рекурсивно, в случай, че се наложи да бъде върнат при намерен елемент. Извикайте foldr с подходяща операция.
  11. Може ли да се дефинира вариант на функцията foldr, която не прави рекурсивно извикване, ако операцията op не използва втория си аргумент? Ако да — как? Ако не — защо?
  12. Може ли с помощта на функцията foldl да се дефинира функция, която намира копие на даден списък. Ако да — с каква сложност е получената функция? Ако не — защо?
Last modified: Wednesday, 23 October 2019, 11:42 PM