(define $main (lambda [$world $argv] (match argv (List String) {[>> (do {[[$world $port1] (open-input-file world file1)] [[$world $port2] (open-output-file world file2)]} (letrec {[$copyLoop (lambda [$world] (do {[[$world $line] (read-line-from-port world port1)]} (if (eof? line) world (do {[$world (write-string-to-port world port2 line)] [$world (write-char-to-port world port2 '\n')]} (copyLoop world)))))]} (do {[$world (copyLoop world)] [$world (close-output-port world port2)] [$world (close-input-port world port1)]} world)))] [_ ]})))