packages feed

egison-3.3.11: lib/core/io.egi

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

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

(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))]})))

;;;
;;; Others
;;;
(define $pure-rand
  (lambda [$s $e]
    (io (rand s e))))