about summary refs log tree commit diff stats
path: root/309stream.subx
Commit message (Collapse)AuthorAgeFilesLines
* 6687 - stream-empty? and stream-full?Kartik Agaram2020-07-301-2/+50
|
* 6684 - experimental primitives for streamsKartik Agaram2020-07-291-0/+108
This is a hacky special case. The alternative would be more general support for generics. One observation: we might be able to type-check some primitives using `sig`s. Only if they don't return anything, since primitives usually need to support arbitrary registers. I'm not doing that yet, though. It eliminates the possibility of writing tests for them in mu.subx, which can't see 400.mu. But it's an alternative: sig allocate out: (addr handle _) sig populate out: (addr handle array _), n: int sig populate-stream out: (addr handle stream _), n: int sig read-from-stream s: (addr stream _T), out: (addr _T) sig write-to-stream s: (addr stream _T), in: (addr _T) We could write the tests in Mu. But then we're testing behavior rather than the code generated. There are trade-offs. By performing type-checking in mu.subx I retain the option to write both kinds of tests.