2016-05-20 2 views
-2

У меня есть родословная следующим образом. Как написать функцию, которая пустает список.рождениеBook :: [(String, String, String)] birthBook = [("dd", "2", "4")]Как удалить все элементы в списке в haskell?

+0

Что такое книга о рождении? Что вы на самом деле пытаетесь сделать? – dfeuer

+0

Вы можете (1) использовать пустой список там, где это необходимо, или (2) если вы действительно хотите функцию, используйте что-то вроде: clearBirthBook = const [] –

ответ

1

В Haskell такой вещи нет. Haskell - это язык, на котором значения равны неизменяемым. Это означает, что после определения значения они не могут быть изменены. Вы спутать с императивными языками, где вы могли бы сделать

birthbook = [1,2,3] 
birthbook = [] 
print birthbook // -> [] 

Если вы запутались, посмотрите на the Haskell wiki.

Чисто функциональные программы обычно работают с неизменяемыми данными. Вместо изменения существующих значений создаются измененные копии, а оригинал сохраняется. Поскольку неизменные части структуры не могут быть изменены, их часто можно разделить между старыми и новыми копиями, что экономит память.

1

если по пустой список вы говорите о что-то как:

emptyBook :: [(String,String,String)] ->() 

, который превратит

birthBook=[(...)] 

с

emptyBook birthBook 

в

birthBook=[] 

тогда вы не - вот что значит быть неизменны


что вы делаете вместо этого передать свой список/книга вокруг (возможно получить фантазии и поместить его в состояние-монада) - чем это так просто, как сбрасывание старого значения и просто продолжать с []

или вы двигаетесь в IO и вернуться к императивному программированию (с использованием IORef сек или около meting)

Смежные вопросы