type Dialogue = [Response] -> [Request]
data Request = ReadFile String
| WriteFile String String
| AppendFile String String
| ReadBinFile String
| WriteBinFile String Bin
| AppendBinFile String Bin
| DeleteFile String
| StatusFile String
| ReadBinaryFile String
| WriteBinaryFile String String
| ReadXdgFile XdgDirectory String
| WriteXdgFile XdgDirectory String String
| ReadChan String
| AppendChan String String
| ReadBinChan String
| AppendBinChan String Bin
| StatusChan String
| Echo Bool
| GetArgs
| GetEnv String
| SetEnv String String
| ReadChannels [String]
| ReadBinChannels [String]
| CreateProcess Dialogue
| CreateDirectory String String
| OpenFile String Bool
| OpenBinFile String Bool
| CloseFile File
| ReadVal File
| ReadBinVal File
| WriteVal File Char
| WriteBinVal File Bin
| Sleep Double
| ChangeDirectory String
| GetTime
| DeleteDirectory String
| System String
| ReadDirectory String
| XCommand (XDisplay, XWId, XCommand)
| GetAsyncInput
| GetCpuTime
| GetProgName
| GetLocalTime
| ToCalendarTime ClockTime
| SigAction Int SigAct
| Exit Int
| ReadFileScattered String [Int]
| Select [Descriptor]
| SocketRequest SocketRequest
| XRequest (XDisplay, XWId, XRequest)
| ReadFileFast String
| RenameFile String String
| GetCurrentDirectory
| GetModificationTime FilePath
| GetCurrentTime
| GetZonedTime
instance Show Request
data Response = Success
| Str String
| Bn Bin
| Failure IOError
| Tag [(String, Char)]
| BinTag [(String, Bin)]
| StrList [String]
| Fil File
| Dbl Double
| AsyncInput AsyncInput
| SocketResponse SocketResponse
| XResponse XResponse
| IntResp Int
| SelectResp [([File], [File], [Double])]
| SigActResp SigAct
| ClockTime ClockTime
| CalendarTime CalendarTime
| UTCTime UTCTime
| ZonedTime ZonedTime
instance Read Response
instance Show Response
Dialogue.
Monadic I/O was introduced in
Haskell 1.3 and the type of the main function
changed to IO ().