[swift-evolution] [Review] SE-0144: Allow Single Dollar Sign as a Valid Identifier

Jacob Bandes-Storch jtbandes at gmail.com
Sun Oct 16 11:29:38 CDT 2016

Proposal link:


>         * What is your evaluation of the proposal?


The proposal does not actually provide motivation for keeping $ beyond "the
Dollar library already uses it".

A more Swifty way for a library to introduce these operations would be with
extensions. Here are some suggestions, based off the first several
operations described in the library's readme:

$.at → convenience subscript(Index...) for Collection
$.chunk → convenience function for Sequence
$.compact → flatMap{$0}
$.contains → already exists as Sequence.contains
$.cycle → convenience function for Collection
$.difference → convenience function on Collection, or just use Set
operations, or filter
$.each → exists as Sequence.forEach
$.every → extension on Sequence
$.factorial → convenience method or postfix operator for Integer
$.fetch → convenience function on Collection
and so on.

It looks like the author's Cent <https://github.com/ankurp/Cent> library is
already taking this approach.

>         * Is the problem being addressed significant enough to warrant a
> change to Swift?

Yes, but the change has already been made: removing $ as a valid identifier

>         * Does this proposal fit well with the feel and direction of Swift?

Not really. If anything, IMO, the dollar sign feels more like an operator
character. (However, it's probably here to stay in identifiers because of
closure parameters and LLDB variables.)

>         * If you have used other languages or libraries with a similar
> feature, how do you feel that this proposal compares to those?

The Dollar library resembles the style of JavaScript libraries such as
jQuery or Underscore, but that isn't a positive thing in my mind — as
mentioned above, the Swift way of doing things is different.

>         * How much effort did you put into your review? A glance, a quick
> reading, or an in-depth study?

Thorough reading of the proposal; brief glance at the library's readme on
GitHub.  Lots of time thinking about operator & identifier characters for a
forthcoming proposal.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161016/fcadef4a/attachment.html>

More information about the swift-evolution mailing list