2015-10-21 3 views
-1

Я пытаюсь добавить неупорядоченный список, такой как [2,1,5,4,3], в сумку, которую можно рассматривать как пустой список.Добавление списка в пустую сумку

Вот мой код:

module Bags where 

import Data.List 
import Prelude 

-- | Bag datatype 
type Bag a = [a] 

-- | Empty bag 
emptyBag :: Bag a 
emptyBag = [] 

-- | Put all elements from a list into a bag. 
listToBag :: Bag a -> [a] -> Bag a 
listToBag xs = foldr (\x bag -> bagInsert bag x) emptyBag xs 

Функция, которая вставляет элемент в список приведен ниже

-- | Add an element to a bag. 
bagInsert :: Bag a -> a -> Bag a 
bagInsert b = (insert (+) emptyBag) 

Однако функция insert для упорядоченных элементов. Я могу добавить эти элементы, не переставляя их соответствующие позиции в списке?

ответ

0

Конечно, вы можете:

module Bags where 

type Bag a = [a] 

emptyBag :: Bag a 
emptyBag = [] 

listToBag :: Bag a -> [a] -> Bag a 
listToBag = foldr (:) 

bagInsert :: Bag a -> a -> Bag a 
bagInsert = flip (:) 

Выражение listToBag emptyBag [2,1,5,4,3] оценивает в мешок [2,1,5,4,3].

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