- Stdio.IOBuffer is harder to type than ADT.struct. Can we rename it to Stdio.Buffer? There is already IO in Stdio.
I tried Stdio.Buffer but then all types suddenly became String.Buffer. I could not, at that time at least, be bothered to fix the precompiler...
- read_buffer dosn't return Stdio.IOBuffer.
An expression of type { IOBuffer = object } cannot be assigned to a variable of type { IOBuffer = object(implements _static_modules._Stdio()->IOBuffer) }.
Well, yes, that is indeed a bother. The reason is sort of silly, the precompiler is simply not assigning the correct type (it should be rather easy, really, the program id is right there in new_program->id)
- It would be great if we could type cast() properly, so we can tell that (string)iobuffer is actually string(8bit).
Ah, yes, that, it would probably be somewhat easy to implement specifically for cast using a type check callback.
It would however be very nice to have it genrally for all LFUN using operators.
if( arg1 == obj && arg1[lfun) ) { // consume arg1, return type for call( arg1[lfun](arg2) ) }
else if( arg2 == obj && arg2[`lfun) ) { // consume arg2, return type for call( arg2[`lfun](arg1) ) }