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

Reply via email to