Я очень новичок в Haskell, и у меня есть простой вопрос.
Какую функцию я могу использовать с a и b, которая приведет к a, b раз.
Пример: a = 4 | b = 3
Вернется: [4, 4, 4]
Спасибо!
Ответ 1
replicate:
replicate 3 4
будет:
[4,4,4]
Когда вы знаете, какой тип функции вам нужен (в этом случае было совершенно очевидно, что функция, в которой вы нуждались, имела тип, похожий на Int -> a -> [a]), вы можете использовать Hoogle, чтобы найти его.
Ответ 2
Вы также можете использовать рекурсию (хотя, конечно, предпочтительные решения должны быть предпочтительнее):
rep a 0 = []
rep a b = a : rep a (b-1)
Ответ 3
Конечно, правильно, вы должны использовать replicate.
Однако очень общий шаблон для таких задач состоит в том, чтобы построить бесконечный список и взять столько, сколько вам нужно (используя take или takeWhile):
rep a b = take b $ repeat a
Другим (более учебным, чем практическим) подходом является использование списка правильной длины и отображение всех элементов в a: