Мой код ниже. Похоже, что данные выводятся в случайном порядке, что имеет смысл, поскольку NamedRecord
— это просто Map
. Есть ли способ, которым я могу обеспечить выполнение определенного приказа?
Я думаю, что одним из вариантов является создание канала типа Conduit (Named a) m (Row Text)
, но похоже, что это достаточно распространенный вариант использования, и что-то стандартное уже должно существовать.
processor :: Monad m => Conduit (Named FalconRow) m (Named HefRow)
processor = do
value <- await
case value of
Nothing -> return ()
Just v -> do
let transformed = (fixRow . getNamed) v
CL.sourceList $ Prelude.map Named transformed
runTranslation :: IO ()
runTranslation = runResourceT $
transformCSV defCSVSettings
(sourceFile "input.csv")
processor
(sinkFile "output.csv")