Задача. Нека са дадени следните изрази на езиците Haskell и Scheme. Моля, посочете каква е оценката на изразите на един от двата езика по ваш избор (попълнете едно от правоъгълните карета по-долу).



map (head [(\couple->fst couple + snd couple)])

  (foldr1 (++) [[(1,2)],[(3,4)]])


Оценка:__________________________________________________________________


[zip [x] [x] | x <- [1..5]]


Оценка:__________________________________________________________________

map (\(x:y:z)->x:z) [[1,2,3],[2,3,1],[3,1,2]]

Оценка:__________________________________________________________________



(map

  (car (list (lambda (couple) (+ (car couple) (cdr couple)))))

  (apply append '( ( (1 . 2) ) ( (3 . 4) ) ) ) )


Оценка:__________________________________________________________________


(map (lambda (x)
            (cons x (list x)))
   '(1 2 3 4 5))


Оценка:__________________________________________________________________

(map (lambda (pred) (filter pred '(1 2 3 4 5)))

    (list even? odd?))

Оценка:__________________________________________________________________


Задача. Кое от следните твърдения за специалните форми в Scheme НЕ Е вярно?

а) В Scheme можем да дефинираме собствени специални форми.

б) Функциите от по-висок ред са пример за специални форми.

в) Всяка специална форма може да се оценява по специфичен начин.

г) Логическите операции and и or са специални форми.


Задача. Опишете основното правило за оценяване в Scheme.


Задача. За всеки от следните конструкции посочете дали са коректно зададени списъци в Haskell. За тези от тях, които са коректни, напишете от кой тип са.

  • [1,[2]]:[3]
  • 1:[2]:[3]
  • 1:[2,3]
  • []:[2]
  • [2]:[]
  • [[],1:[]]
  • [[]:[],[["a"]]]
  • "a":['b':['c']]
  • "abcd":[]


Задача. Кое от следните е разлика между кортежите (tuples) и списъците в Haskell?

а) Кортежите могат да се състоят максимум два елемента, а списъците — от произволен брой елемента.

б) Можем да имаме кортеж от списъци, но не можем да имаме списък от кортежи.

в) Можем да имаме празен списък, но не можем да имаме празен кортеж

г) С рекурсия можем да обходим елементите на списък с произволна дължина, но не и елементите на кортеж с произволна дължина.


Задача. Три от следните типове са еднакви, но четвъртият е различен. Кой е той?

а) Int -> ([Char] -> String)

б) Int -> String -> [Char]

в) (Int -> String) -> String

г) (Int -> ([Char] -> [Char]))


Задача. Дайте пример, в който функциите foldr1 и foldl1 изпълнени над едни и същи параметри дават различни резултати.

Последно модифициране: четвъртък, 4 февруари 2016, 23:16