<div dir="ltr"><div>Hi Peter,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 23, 2019 at 3:02 PM Peter Wang <<a href="mailto:novalazy@gmail.com">novalazy@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">library/string.m:<br>
    Simplify string.append(out, out, in) and make it work sensibly in<br>
    the presence of ill-formed code unit sequences, breaking the input<br>
    string after each code point or code unit in an ill-formed sequence.<br></blockquote><div><br></div><div>This doesn't match the forwards mode, which can join together two ill-formed sequences to make a valid code point :-(</div><div><br></div><div>I can think of two changes to the declarative semantics that could resolve this:</div><div><br></div><div>1. Disallow the case where we make a valid code point by appending (some part of) an ill-formed sequence at the end of the first argument with one at the start of the second argument.</div><div><br></div><div>2. Disallow _any_ ill-formed sequence at the start of the second argument.</div><div><br></div><div>The latter would affect more programs, but is probably better as the test would be more efficient in the commonly-used forwards mode.</div><div><br></div><div>Whatever the case, the documentation should clarify the semantics.</div><div><br></div><div>Mark</div><div><br></div></div></div>