Я пытаюсь понять каналы 4.0 и хочу конвертировать некоторый код кабелепровода. Предположим, у меня есть поток Int
с, и я хотел бы, чтобы пропустить первые пять, а затем получить сумму следующего 5. Используя простые списки, это было бы:Складывание подмножества потока с использованием труб 4.0
sum . take 5 . drop 5
В трубопроводе, это будет :
drop 5
isolate 5 =$ fold (+) 0
Или как полной программе:
import Data.Conduit
import Data.Conduit.List (drop, isolate, fold)
import Prelude hiding (drop)
main :: IO()
main = do
res <- mapM_ yield [1..20] $$ do
drop 5
isolate 5 =$ fold (+) 0
print res
Однако, я не совсем уверен, как сделать это с помощью труб.
Но трубы имеют одинаковое положение, падение и сгиб –
@SassaNF Тип 'fold' в трубах значительно отличается от типа в кабелепроводе, откуда и возникает путаница. –