Добавить список в список списка - Haskell - PullRequest
3 голосов
/ 30 апреля 2020

Я пытаюсь сделать функцию в haskell. Цель этой функции - добавить список в существующий список.

[Int] -> [[Int]] -> [[Int]]

I wi sh это будет работать так:

[1] -> [[2],[3]] -> [[2],[3],[1]]

Я хотел бы знать как я могу приступить к этому. Для этого есть встроенная функция?

1 Ответ

4 голосов
/ 30 апреля 2020

Вы можете заключить элемент [1] в одноэлементный список, а затем добавить два списка с помощью (++) :: [a] -> [a] -> [a]. Таким образом, вы можете реализовать такую ​​функцию с помощью:

addlast :: a -> [a] -> [a]
addlast x ys = ys ++ [x]

Однако функция (++) обычно будет занимать линейное время в количестве элементов левого операнда (поэтому ys), что делает ее вычислительно дорогой. Поэтому обычно лучше, если порядок не имеет значения для добавления в список.

В пакете extra [Hackage] вы можете использовать snoc :: [a] -> a -> [a]. В этом случае, таким образом, это «перевернутая» версия snoc:

import Data.List.Extra(<b>snoc</b>)

addlast :: a -> [a] -> [a]
addlast = flip <b>snoc</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...