Я не программист Haskell, но мне любопытно ответить на следующие вопросы.Тест Haskell: простая функция
Неформальная функция спецификация:
Пусть MapProduct функция, которая принимает функцию с именем F и несколько списков. Он возвращает список, содержащий результаты вызова F с одним аргументом из каждого списка в каждой возможной комбинации.
Пример:
Вызов MapProduct с F является функцией, которая просто возвращает список своих аргументов, и два списка. Один из списков содержит целые числа 1 и 2, а другой содержит строки «a» и «b». Он должен вернуть список, содержащий списки: 1 и «a», 1 и «b», 2 и «a», 2 и «b».
Вопросы:
- Как реализуется MapProduct?
- Каков тип функции? Что такое тип F?
- Можно ли догадаться, что делает функция, просто глядя на ее тип?
- Можете ли вы обрабатывать неоднородные списки в качестве входных данных? (например, 1 и «a» в одном из списков ввода)
- Какое дополнительное ограничение (если оно имеется) необходимо ввести для реализации MapProduct?
Я предполагаю, что это не был первоначально Haskell вопрос , поскольку в Haskell нет такого понятия, как гетерогенный список, не прибегая к экзистенциальным типам. – Chuck
Я знал эту проблему, но я думал, что можно обойти это, но почему-то не так? Это довольно простая и полезная функция, ее также легко реализовать правильно. – levy
Почему это «викторина»? – MtnViewMark