<div dir="ltr"><div>Thanks Richard, see the discussion last month (same Subject line) that considered/rejected various ideas</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 9 Jul 2021 at 00:05, Richard O'Keefe <<a href="mailto:raoknz@gmail.com">raoknz@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">I note that<br>
(1) Clean uses ":" in lists the way Prolog uses "|".<br></blockquote><div><br></div><div>Yeah that's where I started. [x : xs] is already valid Haskell, meaning [ (x: xs) ].</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
(2) Before Prolog switched to "|", Edinburgh Prolog used ",.." (two tokens).<br></blockquote><div><br></div><div>Haskell already has [1, 2 .. 5] for arithmetic sequences. `,..` Wouldn't quite be ambiguous, but is dangerously close.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
(3) There doesn't seem to be any reason why [p1,p2,p3]++pr could not be<br>
a pattern, where p1, p2, p3 match elements and pr  the rest. </blockquote><div><br></div><div>Oh but `++` is an operator, not a constructor. Syntactically that's not a pattern.</div><div>So [p1, p2]++pr++pq is a valid expression; what would it mean as a pattern?</div><div>Somebody in last month's discussion wanted similar, especially for strings "prefix"++pr.</div><div>But it would be valid in a pattern only if the lhs were a pattern, and we made a special syntactic case for ++. Then what if there's a user-defined override for ++?</div><div><br></div><div>Also see my OP last month, I want the list to be the thing in [ ], not also some trailing expression.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> Erlang has <string literal> ++ <pattern>, but forbids <list pattern> ++ <pattern>,<br>
presumably because it uses "|" like Prolog.<br>
</blockquote></div></div>