data FRequest = XCmd XCommand | LCmd LayoutMessage | XReq XRequest | SReq SocketRequest | DReq Request instance Show FRequest data FResponse = XEvt XEvent | LEvt LayoutResponse | XResp XResponse | SResp SocketResponse | DResp Response instance Show FResponse
Request types: XCommand, LayoutMessage, XRequest, SocketRequest, Request.
Response types: XEvent, LayoutResponse, XResponse, SocketResponse, Response.
The fudget type: Fudget.
Until recently (July 1999), the types of the low level streams were XCommand and XEvent, and the other types of requests and responses were embedded in these types. We have now tried to make the different request types independent of each other to obtain a more modular design. In particular, this will eliminate the need for mutually recursive modules when compiling fudgets with NHC and GHC.
This change apparently introduces an extra level of tagging for many cases
(in particular for XCommand
s and XEvent
s), so
one might suspect that this representation is less efficient. But preliminary
observations indicate that the new representation actually speeds up programs
by 5-9%. There are in fact cases when the level of tagging is less, e.g. when
a fudget receives an XResponse. The clean separation also makes the functions
isRequest
and isResponse
simpler.
This page documents work progress. Information on this page is subject to change without notice and does not represent a commitment on the part of the Fudgets corporation.