packages feed

egison-4.0.0: lib/core/io.egi

--
--
-- IO
--
--

--
-- IO
--
print :=
  procedure x ->
    do write x
       write "\n"
       flush ()

printToPort :=
  procedure port x ->
    do writeToPort port x
       writeToPort port "\n"

display :=
  procedure x ->
    do write x
       flush ()

displayToPort := procedure port x -> do writeToPort port x

eachLine :=
  procedure proc ->
    do let eof := isEof ()
       if eof
         then return ()
         else do let line := readLine ()
                 proc line
                 eachLine proc

eachLineFromPort :=
  procedure port proc ->
    do let eof := isEofPort port
       if eof
         then return ()
         else do let line := readLineFromPort port
                 proc line
                 eachLineFromPort port proc

eachFile :=
  procedure files proc ->
    match files as list string with
      | [] -> return ()
      | $file :: $rest ->
        do let port := openInputFile file
           eachLineFromPort port proc
           closeInputPort port
           eachFile rest proc

--
-- Collection
--
each :=
  procedure proc xs ->
    match xs as list something with
      | [] -> do return ()
      | $x :: $rs ->
        do proc x
           each proc rs

--
-- Debug
--
debug %expr :=
  io do print (show expr)
        return expr

debug2 %msg %expr :=
  io do display msg
        print (show expr)
        return expr