RosettaCodeData/Task/Stream-merge/PicoLisp/stream-merge-1.l
2023-07-01 13:44:08 -04:00

14 lines
410 B
Text

(de streamMerge @
(let Heap
(make
(while (args)
(let? Fd (next)
(if (in Fd (read))
(link (cons @ Fd))
(close Fd) ) ) ) )
(make
(while Heap
(link (caar (setq Heap (sort Heap))))
(if (in (cdar Heap) (read))
(set (car Heap) @)
(close (cdr (pop 'Heap))) ) ) ) ) )