Dyad ;: should not reject machines that emit an output when j = _1 unless the output includes the word (i. e. when f is 0 or 1). For other values of f the machine should be processed. The erroneous test occurs in 2 places: a check before the machine starts, and a check when ew is performed.
As it stands now, it is impossible to create a machine that emits an output in response to the first input symbol. This is perhaps reasonable for machines of type f=0 and 1, which are word recognizers (I personally think it should emit an empty rather than error even then); but it is surely unreasonable for the other types, which may be general-purpose machines performing processing unrelated to word recognition. These machines should simply generate an output whenever the machine says to do so. The workaround I have found is to add an idle state 0 to the machine, and an extra idle symbol at the beginning of the input y. The idle state sets j=0 and then the rest of the machine works. But this workaround will not work when initial i ~: 0, which means that it fails in the cases where performance really matters (like when you are decoding mp3 files or compressed video and you want to use the initial i so you don't have to make copies of the input). Simply removing the overzealous audit will fix the problem. Henry Rich ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
