$ENTRY Go { , : e.File , : e.Alignment , : e.Lines , : e.Parts , >: e.Cols = ; }; ReadFile { s.Chan e.File = ; (s.Chan), : { 0 = ; e.Line = (e.Line) ; }; }; Split { (e.Sep) e.Part e.Sep e.Rest = (e.Part) ; (e.Sep) e.Part = (e.Part); }; Each { (e.F) = ; (e.F) (e.X) e.Xs = () ; }; MaxWidth { (Acc s.W) = s.W; (Acc s.W) (e.P) e.X, : s.L, : { '+' = ; s.C = ; }; e.X = ; }; Transpose { e.X, : e.L, : { True = ; False = (e.L) >; }; }; ZipWith { (e.F) () e.Ys = ; (e.F) e.Xs () = ; (e.F) (t.X e.Xs) (t.Y e.Ys) = ; }; AlignCell { ('left') (e.Cell) (s.Width), : s.L = e.Cell ' '> ' '; ('right') (e.Cell) (s.Width), : s.L = ' '> e.Cell ' '; ('center') (e.Cell) (s.Width), > 2>: (s.P) s.V, : e.LP, ' '>: e.RP = e.LP e.Cell e.RP ' '; }; AlignLine { (e.Alignment) (e.Cols) e.Line = >; }; Rep { 0 s.C = ; s.N s.C = s.C s.C>; }; Empty { = True; () e.X = ; e.X = False; }; Len { e.X, : s.L e.X = s.L; }; Head { = ; (e.X) e.Xs = e.X; }; Tail { = ; (e.X) e.Xs = e.Xs; };