In xl.textio.xs, a writable is defined as follows:
// A writable is a type which can be written to a file
generic type writable where
W : writable
F : file := file("Dummy", "w")
any.Write F, W
...and the write function is defined as follows:
to Write(F : file; W : writable; ...) // Write to a file
The purpose of this function is to allow parameters to be directly listed after the call to the write function. Unfortunately, there seems to be a circular reference here. The current XL behaviour is to accept any type as a writable, because this function defines it as such. This is my first foray into generic programming, so I am not sure if this is a flaw in the generics system, or a code flaw, but the code seems logical to me.