Skip to content

Instantly share code, notes, and snippets.

Nil struct

Introduction

Change nil literal type from () to Nil.

Refine if case syntax

Introduction

Change syntax of pattern-matching versions of if and guard.

       /────────────────────── Domain 1
      /
     /                       /───────────── Domain 2
    /                       /
─────────────────────────────────────────────────────── Core operators
             \
              \──────────────────────────── Domain 3
               \
 \──────────────── Domain 4

The metatypes explanation

For every type T in Swift, there is an associated metatype T.Type.

Basics: function specialization

Let's try to write a generic function like staticSizeof. We will only consider its declaration; implementation is trivial and unimportant here.

Out first try would be:

Refactor Metatypes, repurpose T.self and Mirror

Introduction

This proposal want to revise metatypes T.Type, repurpose public T.self notation to return a new Type type instance rather than a metatype, merge SE-0101 into Type, rename the global function from SE-0096 to match the changes of this proposal and finally rename current Mirror type to introduce a new (lazy) Mirror type.

Refactor metatypes

Introduction

  • Rename metatypes T.Type to Metatype

function-type( function-type-parametersopt ) throws-annotationopt -> type

function-type-parametersfunction-type-parameter , function-type-parameters

function-type-parametersfunction-type-parameter ...opt

function-type-parameterattributesopt inoutopt type

throws-annotationthrows | rethrows