(rontolisp) docs
← Functions

open-stream-p

(open-stream-p stream)

Returns t while the stream handle names an open stream and nil after it has been closed -- the question the close-if-open idiom asks so it neither double-closes nor leaks. The interpreter and the JVM answer from the stream table (a close removes the entry) and additionally report nil for a socket closed from the other side.

On the WASM --component backend a socket answers exactly the same way (the socket table is Lisp state there). Any other stream designator answers t when it is non-nil: Preview 1 keeps no per-descriptor open/closed record.

The close case touches a file, so it is shown statically:

(let ((s (open "f.txt" :direction :input)))
  (open-stream-p s)   ; => T
  (close s)
  (open-stream-p s))  ; => NIL