Список построения из функций в Haskell - PullRequest
1 голос
/ 20 марта 2012

Я новичок в Haskell, поэтому я прошу прощения, если это простой вопрос, но я нигде не смог найти ответ.

Что я хотел бы сделать, это взять первый и последний элементперечислите и верните их в новый список.

Я знаю, что head [1,2,3,4] вернет 1, и я знаю, что last [1,2,3,4] вернет 4.Но как мне поместить эти два результата в список, например: [1,4]?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 20 марта 2012

Вы можете поместить элементы в список, используя синтаксис нотации списка:

firstLast1 xs = [head xs, last xs]

, который является синтаксическим сахаром для непосредственного использования конструктора списка:

firstLast2 xs = head xs : last xs : []

Однако оба из них завершатся с ошибкой во время выполнения при пропуске пустого списка. Вы можете защититься от этого путем сопоставления с образцом:

firstLast3 [] = []
firstLast3 xs = [head xs, last xs]
2 голосов
/ 20 марта 2012

Может быть, вы хотите посмотреть на Может быть , чтобы избежать пустого списка.

headAndLast :: [a] -> Maybe [a]
headAndLast [] = Nothing
headAndLast x = Just [head x, last x]

И

> headAndLast [1,2,3]
Just [1,3]
0 голосов
/ 20 марта 2012
let xs = [1, 2, 3, 4] in [head xs, last xs]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...