> On Jul 6, 2016, at 2:13 PM, Leonardo Pessoa <m...@lmpessoa.com> wrote:
> 
> You can also try and simplify your outlines reducing X.c and X.d to a
> single entry as it is the same rule applied to two different elements
> of the language. Using one single keyword (such as in 'open') would
> make it clearer and that is why I prefer to have only one keyword.
> 

I didn’t simply the outlines precisely because the proposal suggests two 
keywords.

One keyword does solve this problem, but not the problem of conflation of 
finality and access control.
You end up with this matrix:

  access      | can override | final
 -------------+--------------+-------
  open        | yes          | Error - “class cannot be open and final"
  public      | no           | Error - “public class is already final by 
default"
  internal    | yes          | final
  fileprivate | yes          | final
  private     | yes          | final

This is way more confusing than the current language:

  access      | can override | final
 -------------+--------------+-------
  public      | yes          | final
  internal    | yes          | final
  fileprivate | yes          | final
  private     | yes          | final

I strongly favor a programming language that doesn’t introduce compiler errors 
to solve problems that could be solved by cleaner syntax.

Since it’s already necessary to place the `public` keyword in front of every 
class, method, property, or subscript that you intend to make public, the 
developer is already thinking about the public API. Typing `public final` 
instead of `public` is an extra keyword, it’s not an extra cognitive burden 
since that cognition is already taking place.

Scott

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to