2
等效代碼
比方說,我有以下幾種類型:管材簡單的功能
type LinkID = Int
data Link = Link {
lid :: LinkID,
llength :: Int
}
data Snap = Snap {
slid :: LinkID,
slength :: Int
}
現在,我想寫一個管道基礎功能,做到這一點:
getSnaps :: LinkID -> [Link] -> [Snap] -> [(LinkID, [Snap])]
getSnaps l lks snp = map (\x -> (lid x, filter (\y -> lid x == slid y) snp)) a
where a = filter (\x -> lid x > l) lks
Assumming,我已經有生產者Link
和Snap
,我如何在這兩個生產者的管道世界中實現上述getSnaps
功能:
psnap :: Producer Snap IO()
psnap = undefined
plink :: Producer Link IO()
plink = undefined
psnap
和plink
的實際類型涉及更多(使用attoparsec-pipes創建),但我想知道如何從psnap
和plink
實現getSnap的功能。有沒有合適的方法來解決這類問題?