Как создать два списка в Haskell - PullRequest
0 голосов
/ 06 января 2019

Как мне взять список в haskell и создать два списка в качестве вывода?

Например, вопрос, над которым я работаю, состоит в создании программы, которая принимает предикат и список и возвращает список из двух списков, первый те элементы входного списка, которые передают предикат, во-вторых, те, которые не по порядку, например

 tear (>5) [1,10,2,12,3,13]

=> [[10,12,13], [1,2,3]]

Что у меня есть:

tear f [] = []
tear f (x:xs)
 | f x = x: tear f xs
 | otherwise = tear f xs

Который производит

tear (>5) [1,10,2,12,3,13]
[10,12,13]

1 Ответ

0 голосов
/ 06 января 2019

Следуя предложению @ WillemVanOnsem использовать 2-кортеж:

tear f [] = ([],[])
tear f (x:xs)
 | f x = (x:y,z)
 | otherwise = (y,x:z)
    where (y,z) = tear f xs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...