packages feed

egison-3.5.2: lib/core/io.egi

;;;;;;
;;;;;;
;;;;;; IO
;;;;;;
;;;;;;

;;;
;;; IO
;;;
(define $print
  (lambda [$x]
    (do {[(write x)]
         [(write "\n")]
         [(flush)]
         })))

(define $print-to-port
  (lambda [$port $x]
    (do {[(write-to-port port x)]
         [(write-to-port port "\n")]
         })))

(define $each-line
  (lambda [$proc]
    (do {[$eof (eof?)]}
      (if eof
        (return [])
        (do {[$line (read-line)]
             [(proc line)]}
          (each-line proc))))))

(define $each-line-from-port
  (lambda [$port $proc]
    (do {[$eof (eof-port? port)]}
      (if eof
        (return [])
        (do {[$line (read-line-from-port port)]
             [(proc line)]}
          (each-line-from-port port proc))))))

;;;
;;; Collection
;;;
(define $each
  (lambda [$proc $xs]
    (match xs (list something)
      {[<nil> (do {})]
       [<cons $x $rs>
        (do {[(proc x)]}
          (each proc rs))]})))