Haskell добавляет два списка, используя foldr - PullRequest
0 голосов
/ 09 июня 2018

Я знаю, что в Haskell есть функция intercalate, которая объединяет два списка.

intercalate ", " ["Hello", "world"]

выдаст: "Hello, world"

Я пытаюсь объединить два списка, используя foldr.

Но так как я новичок в Haskell, я не уверен, как это сделать.

Я полагаю, что функция должна выглядеть примерно так:

inters n xs = foldr (\x acc -> x ++ str ++ acc) "" xs

Это даетрезультат: "Hello, world, ", где запятая и пробел также добавляются в конце.

Как мне сделать так, чтобы функция добавляла только промежуточные элементы списка, а не в конце?

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 июня 2018

Есть функции foldl1 и foldr1, которые вы можете использовать:

foldl1 (\s1 s2 -> s1 ++ ", " ++ s2) ["alpha", "beta", "gamma"]
foldr1 (\s1 s2 -> s1 ++ ", " ++ s2) ["alpha", "beta", "gamma"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...