Hi Romain, I didn't look at your patches yet but I have a few comments. Basically, I think that we should be careful with the read cells / interactive_* stuff. This is quite a weird toy.
First, it uses these strange "getter" constraints, these "... where 'a is either float or ()->float". It is safe and behaves well on simple examples, but I'm sure that our current constraint management can make type inference look very weird on not-so-complicated-examples. I seem to remember that I had started to build an example but I found a bug instead :\ Basically, the problem is that the constraint satisfaction checking is done only at instantiation time: the contradiction between two constraints is never detected, the simplification of constraints never occurs either. Second, the float getters / interactive floats are really good for audio processing parameters, but, even though the technique can be pushed further, it is not always so natural. We had several discussions on that with Sam, I won't try to detail the issue... To conclude: we have a really cool magical hammer, but let's be careful with it and try to stick to simple solutions when possible. In the case of file outputs, the filename is already dynamic, with the date format code feature. I'm sure we can tweak that a bit more and get a simple clean solution to get metadata-dependent filenames. > * interactive vorbis does not look good in the way it modifies > file_output.ml.. It should have > broke others file outputs.. ! However, it works quite ok with the test > below.. I seem to remember that I did some modifications that only apply to vorbis. I left the job unfinished, eventually all file outputs should benefit from the dynamicity. > With some more work (and a 'a -> fun), I'll be able to write a stream ripper > using liq !! Cool example :) Can you send a mockup of what the script should look like, without bothering about implementation ? (In particular I don't understand the "'a -> fun" thing that you want.) In September, we can work together to make it real. ++ -- David
