<div dir="auto"><div><div class="gmail_quote"><div dir="ltr">On Mon, Feb 4, 2019, 12:47 AM Christopher Barker </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote">I've lost track if who is advocating what, but:<br></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Well, I made a toy implementation of a Vector class. I'm not sure what that means I advocate other than the existence of a module on GitHub.</div><div dir="auto"><br></div><div dir="auto">FWIW, I called the repo 'stringpy' as a start, so that expressed some interest in it being about vectors of strings. But so-far, I haven't found anything that actually needs to be string-like.  In general, methods get passed through to their underlying objects and deliberately duck typed, like:</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div class="gmail_quote">    v.replace("a", "b")</div></div></div></blockquote></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">As an extra, we could enforce homogeneity, or even string-nesss specifically. I don't really know what homogeneity means though, once we consider ABCs, subclasses, and duck types that don't use inheritance on r ABC registration. At least so far, I haven't coded anything that would get a performance gain from enforcing the string-nesss of items (but all pure Python so far, no Cython or C)</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div>This is adding something - maybe just compactness, but I also think readability.<br></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">I think with changed methods the win gets greater:</div><div dir="auto"><br></div><div dir="auto"><span style="font-family:sans-serif">    v.replace("a", "b").upper().apply(myfun)</span><br></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div>If you want to do any generic items, it becomes a lot harder.<br></div></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">So far, generic has been a lot easier to code than hand-rolled methods.</div></div>