Haskell (:) и (++) различия

Можно использовать выбор, когда Вы хотите возвратить что-то. Если Вы не делаете, можно использовать ToList сначала, потому что Вы, вероятно, не хотите изменять что-либо в наборе.

47
задан Alfie J. Palmer 10 January 2016 в 10:21
поделиться

2 ответа

Оператор : известен как оператор «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] действительно.

77
ответ дан 7 November 2019 в 13:06
поделиться

: объединяет элемент в список.

++ добавляет два списка.

Первый имеет тип

a -> [a] -> [a]

, а второй - тип

[a] -> [a] -> [a]
22
ответ дан 7 November 2019 в 13:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: