+ = Directory -- ^ The standard libraries do not have direct support
+ -- for this device type, but a user implementation is
+ -- expected to provide a list of file names in
+ -- the directory, in any order, separated by @'\0'@
+ -- characters, excluding the @"."@ and @".."@ names. See
+ -- also 'System.Directory.getDirectoryContents'. Seek
+ -- operations are not supported on directories (other
+ -- than to the zero position).
+ | Stream -- ^ A duplex communications channel (results in
+ -- creation of a duplex 'GHC.IO.Handle.Handle'). The
+ -- standard libraries use this device type when
+ -- creating 'GHC.IO.Handle.Handle's for open sockets.
+ | RegularFile -- ^ A file that may be read or written, and also
+ -- may be seekable.
+ | RawDevice -- ^ A "raw" (disk) device which supports block binary
+ -- read and write operations and may be seekable only
+ -- to positions of certain granularity (block-
+ -- aligned).