現実世界の用途は、おそらくデータベースや(コンテナや順不同コンテナパッケージから)少なくともマッピングを使用する必要がありますが、簡単な解決策は単純なリストの内包表記を使用して取得することができます。
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を使用すると、より実用的なソリューションが得られます。
件名と販売構造の店舗はどのようになっていますか?各サブジェクトはリスト内の要素ですか?データベース(SQLまたはそれ以外)?ただのリスト? –
これまでに何がありますか?この質問から、あなたが何をしようとしているのかを知る方法はありません。 –
Woo。ハスケル。ファンシー... :) –