@@ -240,6 +240,14 @@ feof : File -> IO Bool
240240feof (FHandle h) = do eof <- do_feof h
241241 return (not (eof == 0))
242242
243+nullPtr : Ptr -> IO Bool
244+nullPtr p = do ok <- mkForeign (FFun "isNull" [FPtr] FInt) p
245+ return (ok /= 0);
246+
247+validFile : File -> IO Bool
248+validFile (FHandle h) = do x <- nullPtr h
249+ return (not x)
250+
243251while : |(test : IO Bool) -> |(body : IO ()) -> IO ()
244252while t b = do v <- t
245253 if v then (do { b; while t b }) else return ()