Задания там поинтереснее. Например:
Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать?
Две функции одинаковой арности считаются разными, если существует набор значений их аргументов, на котором они дают разные результирующие значения.
Сначала я сразу ответил, исходя из описания типа, и такой ответ посчитали за правильный. Но на самом-то деле разве их не больше?
Пока не смотрел, как сделать рандом в хаскелле, но ведь можно сделать функцию, которая выдает случайным образом первый, второй или четвертый аргумент. Или первый или второй, и так далее. Причем можно подкрутить их так, чтобы разные аргументы возвращались с разной вероятностью, и тогда таких функций может быть вообще бесконечно много
тут подходит функция только одной арности заданная типом
Одно из основных свойств хаскеля - чистота всех функций, что включает в себя детерминированность, то есть однозначную зависимость результата от аргументов. Нетрудно догадаться, что функция, возвращающая рандомный аргумент, детерминированной не будет.
Обсуждают сегодня