Главная / Программирование /
Язык и библиотеки Haskell 98 / Тест 4
Язык и библиотеки Haskell 98 - тест 4
Упражнение 1:
Номер 1
Какие объявления входят в группу классов типов и перегрузок:
Ответ:
 (1) topdecl
 
 (2) simpleclass
 
 (3) class
 
 (4) newtype
 
 (5) module
 
 (6) vars
 
Номер 2
Какие объявления входят в группу определяемых пользователем типов данных:
Ответ:
 (1) instance
 
 (2) default
 
 (3) data
 
 (4) type
 
 (5) dclass
 
 (6) simpletype
 
Номер 3
Какие объявления не входят в группу вложенных объявлений:
Ответ:
 (1) class
 
 (2) type
 
 (3) default
 
 (4) vars
 
 (5) fixity
 
 (6) op
 
Упражнение 2:
Номер 1
Какие типы данных называются "зашитыми":
Ответ:
 (1) строковые 
 (2) символьные 
 (3) строковые и символьные 
 (4) строковые и целые 
 (5) целые числа и числа с плавующей точкой 
 (6) символьные и числа с плавующей точкой 
Номер 2
Сколько возможных форм может иметь вид:
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
Номер 3
Сколько форм имеет вид?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
Упражнение 3:
Номер 1
Тип списка обозначается:
Ответ:
 (1) [] 
 (2) () 
 (3) {} 
 (4) *_* 
Номер 2
Тип функции обозначается:
Ответ:
 (1) [] 
 (2) () 
 (3) {} 
 (4) *_* 
Номер 3
Типы кортежей обозначаются:
Ответ:
 (1) (,),(,,),(,,,) 
 (2) [] 
 (3) () 
 (4) {},{,},{,,} 
Упражнение 4:
Номер 1
Типы данных data,newtype,type
можно использовать:
Ответ:
 (1) на любом уровне модуля 
 (2) на верхнем уровне модуля 
 (3) на нижнем уровне модуля 
 (4) вообще не используются 
Номер 2
Объявление синонимов типа имеет вид:
Ответ:
 (1) type T u1...uk = t
 
 (2) data T u1..uk = t
 
 (3) newtype T u1..uk = t
 
Номер 3
Какое объявление будет правильным, если натуральные числа будут представлены через тип Integer
:
Ответ:
 (1) type Natural = MakeNatural Integer
 
 (2) newtype Natural = MakeNatural Integer
 
 (3) data Natural = MakeNatural Integer
 
Упражнение 5:
Номер 1
Из перечисленных примеров синонимом типа является:
Ответ:
 (1) type String = [Char]
 
 (2) data Tree s = Leaf a | Branch (Tree a) (Tree b)
 
 (3) data point a = Pt a a
 
Номер 2
Из перечисленных примеров алгебраическим типом данных является:
Ответ:
 (1) Newtype Slowo = bigslow String
 
 (2) data Point = Point Int
 
 (3) type Name = String
 
Номер 3
Из перечисленных примеров переименованным типом является:
Ответ:
 (1) data List = String
 
 (2) Newtype Cercle = Newcircle Float
 
 (3) type Persone = (Name, Address)
 
Упражнение 6:
Номер 1
Какие из ниже перечисленных объявлений экземпляров запрещены:
Ответ:
 (1) instance Functor Tree where ...
 
 (2) instance Functor (fun,fun) where...
 
 (3) instance Functor (Int,Int) where ...
 
Номер 2
Какие из ниже перечисленных объявлений экземпляров возможны:
Ответ:
 (1) instance F (a,a) where ...
 
 (2) instance Functor (fun,fun) where...
 
 (3) instance Fun Fn where ...
 
Номер 3
Какие из ниже перечисленных объявлений экземпляров будут правильными:
Ответ:
 (1) instance (Eq a,Show a) = Foo [a] where ...
 
 (2) class Foo a ⇒ Bar a where...
 
 (3) instance Num a ⇒ Foo [a] where ...
 
Упражнение 7:
Номер 1
Отметьте классы для которых разрешены производные экземпляры:
Ответ:
 (1) Eq
 
 (2) Ord
 
 (3) Sqrt
 
 (4) Exp
 
 (5) Show
 
Номер 2
Отметьте классы которые относятся к производным экземплярам:
Ответ:
 (1) Eq
 
 (2) Ord
 
 (3) Enum
 
 (4) Int
 
Номер 3
Какие опреации определяет класс Eq:
Ответ:
 (1) == и /=
 
 (2) => и />
 
 (3) =< и =
 
 (4) >,< и =
 
Упражнение 8:
Номер 1
К infix - объявлениям относится:
Ответ:
 (1) infix
 
 (2) lfix
 
 (3) infixr
 
 (4) rfix
 
Номер 2
infix - это:
Ответ:
 (1) свободный оператор 
 (2) неассоциативный 
 (3) ассоциативный 
Номер 3
infixl задает:
Ответ:
 (1) правило вычисления целых чисел 
 (2) преоритет операторов 
 (3) условие завершения цикла 
Упражнение 9:
Номер 1
Оператор 'div' является:
Ответ:
 (1) неассоциативным 
 (2) ассоциативным 
 (3) левоассоциативным 
 (4) правоассоциативным 
Номер 2
Оператор 'seq' имеет приоритет:
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 8 
 (5) 9 
 (6) 0 
Номер 3
Оператор 'infixr 7 *' имеет приоритет:
Ответ:
 (1) 1 
 (2) 0 
 (3) 3 
 (4) 9 
 (5) 7 
Упражнение 10:
Номер 1
Связыванием имен в образце является:
Ответ:
 (1) (x + 1) = ...
 
 (2) (+) x 1 = ...
 
 (3) (*)(x + 1) y = ...
 
 (4) (x + 1) * y = ...
 
 (5) (+) x 1 y = ...
 
Номер 2
Связывание имен в функции является:
Ответ:
 (1) x + 1 = ...
 
 (2) (+) x 1 = ...
 
 (3) (x + 1) * y = ...
 
 (4) (+) x 1 y = ...
 
Номер 3
Выражение (*) (x+1) y = ...
является:
Ответ:
 (1) связыванием имен в функциях 
 (2) связывание имен в образце 
 (3) связывание имен переменных 
Упражнение 11:
Номер 1
Что будет являться результатом show (2 + 2) =
:
Ответ:
 (1) 4 
 (2) 2 + 2 
 (3) (2 + 2) 
Номер 2
Какие две операции определяют класс Monad:
Ответ:
 (1) >>= и return
 
 (2) = и where
 
 (3) show и read
 
Номер 3
Монада - это:
Ответ:
 (1) функция 
 (2) конструктор 
 (3) контейнер