Пример
import qualified Data.Conduit.Combinators as CC
import qualified Data.Conduit.Binary as CB
import Algorithms.OutSort ( isolateBySize )
import Algorithms.SortMain ( sortMain )
main :: IO ()
main = sortMain
CB. lines
CC. unlinesAscii
(isolateBySize ( const 1 ) 500000 )
Все, что нужно, — это декодер ( ConduitT ByteString am ()
) , кодер ( ConduitT ByteString am ()
) и функция для разделения входных данных на блоки ( ConduitT aam ()
). Учитывая эти элементы, в результате получается программа, которая может сортировать входные данные произвольного размера, используя внешнюю память.
Лицензия: Массачусетский технологический институт
Автор: Луис Педро Коэльо (электронная почта: [email protected]) (в твиттере: @luispedrocoelho)