Можно использовать выбор, когда Вы хотите возвратить что-то. Если Вы не делаете, можно использовать ToList сначала, потому что Вы, вероятно, не хотите изменять что-либо в наборе.
Оператор :
известен как оператор «cons» и используется для добавления элемента заголовка в список. Итак, []
- это список, а x: []
добавляет x
к пустому списку, образуя список [x]
. Если вы затем воспользуетесь y: [x]
, вы получите список [y, x]
, который совпадает с y: x: []
.
Оператор ++
- это оператор конкатенации списков, который принимает два списка в качестве операндов и «объединяет» их в один список. Итак, если у вас есть список [x]
и список [y]
, то вы можете объединить их следующим образом: [x] ++ [y]
, чтобы получить [x, y
].
Обратите внимание, что :
принимает элемент и список, а ++
принимает два списка.
Что касается вашего кода, который не работает.
reversex ::[Int]->[Int]
reversex [] = []
reversex (x:xs) = reversex(xs):x:[]
Функция обратного преобразования вычисляет список. Поскольку оператор :
не принимает список в качестве первого аргумента, то reverse (xs): x
недопустим. Но reverse (xs) ++ [x]
действительно.
: объединяет элемент в список.
++ добавляет два списка.
Первый имеет тип
a -> [a] -> [a]
, а второй - тип
[a] -> [a] -> [a]