> What possible genericity is there about downcase/upcase? Okay they work on strings and on chars,
> but it's pretty clear their topic is "characters" (string) no?

Always and forever? Are strings, one-dimensional sequences of
characters by definition, the only thing you can think about that
involves characters whose case can be mutated?

Oh, it's designed for possible future structure in mind? While an interesting point I think it's a bit far fetched.

 
> > Do you think this organization would be useful? What if it had a cool
> > font and some cool logos? :-)  I ask because that put me off at first, it
> > looked mouldy.)
>
> Yes, that'd be very useful and it's more or less what we are asking
> to be able to do. Again curious, do you think they made a mistake
> when they named it `string-downcase` there and not `downcase`?

It only works on strings in CL, but characters are defined to be "singleton
string designators", a common concept in CL. Maybe they couldn't
quite decide on a generic version. You see CL didn't  come from
nothing, it was a giant and very expensive effort to reconcile a
_lot_ of competing Lisps.

Interesting.
 
> >> s-truncate (len s)
> > truncate-string-to-width (I got there with apropos truncate.*string btw).
>
> Okay then let's alias that to string-truncate.

To achieve what? I would only bring confusion.  Also to the s.el
cool kids, they would be equally confused, since the arguments
are reversed.

Can you stop with the "cool kids" labelling? I mean we are all old farts here :-P I just happen to have learnt both ways (readings lots of C++ books then eating lots of Ruby tutorials) and both are useful depending on what you do.

 
> >> s-left (len s)
> >subseq
> >> s-right (len s)
> > Add an "from-end" arg to subseq?
>
> Why is there substring if there is subseq then?

¯\_(ツ)_/¯ History?  substring has both optional args.
Use substring if you absolutely know your sequence
is a string, subseq otherwise.

Thanks for the clarification.

 
> >> s-repeat (num s)
> > (cl-loop repeat num concat s)
>
> What if I don't know cl (like I a significant number of package authors) ?

I think you might want to learn how to loop if you're going to program.
You can use while, do, etc. cl-loop is just my favourite.
I don't think this function needs to be in a library, but maybe an example
of how do this can be in one of those boring paragraphs of the manual.

The implication that I don't know how to do loops is a bit mean, but I'll let that pass. I don't know `cl` (tho I copy-pasted some in the past), but I do know loops. I was always somewhat taught that `cl` was not _really_ emacs lisp so you should not use it. Maybe that's wrong.

 
> >> s-contains-p (needle s &optional ignore-case)
> > string-match-p
> That can work, tho the mental path of having to do a regexp match
> while regexp-quoting the string just to do a plain text search feels very inneficient.

Well, I honestly had to look up the doc if "needle" was a string
or a character.  So that mental path is quite worse for me.

Again very interesting: needle and haystack is also a metaphor used in many languages. It's another point where I'd have thought you were trolling if you didn't understand!

 
> >> s-blank-p (s)
> > ugh. nil is a string?
> "is the string blank?" is a concept in many languages,
> but I understand it can be surprising at first.

Yes, things are suprising at first, then you learn them.
Get the hint? ;-)

:-)

Maybe a bit of information that can be useful for you is that I code packages since a while now, for example https://github.com/Silex/docker.el

It's been years since I use Emacs. I obviously never took the proper time to learn it in full depth but I'm not a "newbie".

Philippe