Я начинаю изучать f # с нуля, и я нахожу себя в замешательстве с разницей между массивами и списками, я знаю, что списки неизменны, но все же.F # добавление элемента в список, если он не существует
Я пытаюсь создать функцию, которая добавляет элемент в список, если он не существует и возвращает новый список, иначе, если он существует, возвращает текущий список.
Вот что я до сих пор:
let elem x= Array.exists ((=) x)
let elemOrAdd e l = if elem e l then l else e::l
е :: л не работает, визуальная студия бросает
This expression was expected to have type
'a []
but here has type
'b list
Я уже нахожу это немного подозрительным, что я должен используйте этот Array.exists, но я действительно не в порядке.
Любые подсказки о том, что я делаю неправильно?
Да, это было. Но все же различие между массивом и списком меня смущает. –
Вкратце ['array'] (http://msdn.microsoft.com/en-us/library/dd233214.aspx) является ** изменяемой ** сборкой фиксированного размера с операторами' .' и '[]' для прямого доступа к любому элементу, тогда как ['list'] (http://msdn.microsoft.com/en-us/library/dd233224.aspx) является ** неизменяемой ** коллекцией с операторами' :: 'и' @ ' , допускающий только последовательный доступ к элементам. –