2011-05-22 5 views
0

月額= 5と年= 2010の価格はどうすればよいですか?私はデータに日付を持っていますデータの件名と価格は売ります、彼らはIDで結ばれています。これは私のコードです:データベースのようなものだがデータベースと合計価格はない

-- subject id, date 
data Subject = Subject Int CalendarTime deriving (Read, Show) 

-- sell id, subject id, price 
data Sell = Sell Int Int Double deriving (Read, Show) 
+0

件名と販売構造の店舗はどのようになっていますか?各サブジェクトはリスト内の要素ですか?データベース(SQLまたはそれ以外)?ただのリスト? –

+0

これまでに何がありますか?この質問から、あなたが何をしようとしているのかを知る方法はありません。 –

+0

Woo。ハスケル。ファンシー... :) –

答えて

2

現実世界の用途は、おそらくデータベースや(コンテナや順不同コンテナパッケージから)少なくともマッピングを使用する必要がありますが、簡単な解決策は単純なリストの内包表記を使用して取得することができます。

type Subjects = [Subject] 
type Sells = [Sell] 

あなたはO(N * m)の実装(遊びのために良いだけ!)作ることができます::

price :: Sell -> Double 
price (Sell _ _ d) = d 

calTime :: Subject -> CalendarTime 
calTime (Subject _ c) = c 

sIdent :: Subject -> Int -- Omitted, you should use record syntax anyway 
eIdent :: Sell -> Int -- Omitted 

sumPred :: (CalendarTime -> Bool) -> Subjects -> Sells -> Double 
sumPred js es = sum [price e | j <- js, e <- es 
        , sIdent j == eIdent e 
        , pred (calTime j)] 

しかし、私としては、あなたが件名の単純なリストを持っているし、売ると仮定

言った、それは愚かです。 CalendarTimeでキーを付けられた主題とIDでキー付けされたSellのDBを使用すると、より実用的なソリューションが得られます。

+0

ええ....私は理解しづらいです。 – newuser

+3

ええ...あなたが理解するのを助けるために私には非特異的です。 –

関連する問題