<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br><br>Sent from my iPad</div><div><br>On Jul 11, 2016, at 1:11 AM, Charlie Monroe via swift-evolution <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:<br><br></div><blockquote type="cite"><div><meta http-equiv="Content-Type" content="text/html charset=us-ascii"><div class="">Several notes:</div><div class=""><br class=""></div><div class="">- SKColor is a typealias for NS/UIColor.</div><div class="">- There are other colorspaces beyond RGB. Within such a redesign, I'd personally vote for adding HSB, CMYK, Grayscale.</div></div></blockquote><div><br></div><div>It's also important to distinguish RGN color spaces (i.e. sRGB vs P3).</div><br><blockquote type="cite"><div><div class="">- NSPoint is just a typealias for CGPoint, just like NSRect is CGRect, etc. - there is really no type inferring since it's all CG* structs.</div><div class="">- Image literals should also be able to define the bundle they are in?</div><div class=""><br class=""></div><div class="">Since you've mentioned in later posts that these are values without a type on their own, how would one make their point structure use this? E.g. if I decided to implement struct MyPoint, how would I make it be initializable from #literal.point as well? Or would this be only for the hand-picked types supported by the compiler directly? Sorry, if there are protocols for this, I don't have much Playground experience.</div><div class=""><br class=""></div><div class="">That said, I'd personally rather welcome some kind of unified cross-platform API over several concepts, e.g. Color, Image, being part of Swift's Foundation. Yes, many details are platform specific, but Swift could define a basic API (for retrieving RGB values, etc.) that NSColor and UIColor would inherit from or conform to. The same with images, defining some basic Image protocol that would define the basic image API (i.e. size property, init by name)</div></div></blockquote><div><blockquote type="cite"><div><div class=""><br class=""></div><div class="">I'm not sure if this is something Swift should include, but for the future of the language, it would definitely make sense to include some semi-AppKit/UIKit, which would include some of the UI-related stuff - not a button or table view, that's very platform specific, but some basic stuff such as the aforementioned Color, Image that would really be factories for platform-specific objects...</div><div class=""><br class=""></div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 11, 2016, at 5:48 AM, Erica Sadun via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">This is purely additive and would not be eligible for Swift 3. <div class="">gist: <a href="https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c" class="">https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c</a><br class=""><div class=""><br class=""></div><div class="">-- E</div></div><div class=""><br class=""></div><div class=""><h1 style="box-sizing: border-box; font-size: 2.25em; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; line-height: 1.2; padding-bottom: 0.3em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(238, 238, 238); color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; background-color: rgb(255, 255, 255); margin-top: 0px !important;" class="">Extending Swift Literals</h1><ul style="box-sizing: border-box; padding-left: 2em; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class=""><li style="box-sizing: border-box;" class="">Proposal: TBD</li><li style="box-sizing: border-box;" class="">Author: <a href="http://github.com/erica" style="box-sizing: border-box; background-color: transparent; -webkit-text-decoration-skip: objects; color: rgb(64, 120, 192); text-decoration: none;" class="">Erica Sadun</a></li><li style="box-sizing: border-box;" class="">Status: TBD</li><li style="box-sizing: border-box;" class="">Review manager: TBD</li></ul><h2 style="box-sizing: border-box; margin-top: 1em; margin-bottom: 16px; line-height: 1.225; font-size: 1.75em; padding-bottom: 0.3em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(238, 238, 238); color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; background-color: rgb(255, 255, 255);" class=""><a id="user-content-introduction" class="anchor" href="https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c#introduction" aria-hidden="true" style="box-sizing: border-box; background-color: transparent; -webkit-text-decoration-skip: objects; color: rgb(64, 120, 192); text-decoration: none; display: inline-block; padding-right: 2px; margin-left: -18px; line-height: 1;"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Introduction</h2><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class="">This proposal expands Swift's language literals to include common cross-platform concepts that need not require.</p><h2 style="box-sizing: border-box; margin-top: 1em; margin-bottom: 16px; line-height: 1.225; font-size: 1.75em; padding-bottom: 0.3em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(238, 238, 238); color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; background-color: rgb(255, 255, 255);" class=""><a id="user-content-motivation" class="anchor" href="https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c#motivation" aria-hidden="true" style="box-sizing: border-box; background-color: transparent; -webkit-text-decoration-skip: objects; color: rgb(64, 120, 192); text-decoration: none; display: inline-block; padding-right: 2px; margin-left: -18px; line-height: 1;"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Motivation</h2><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class="">A Swift literal represents a fixed value in source code. A literal can be a string, a number (for example an integer), a compound value (such as an array), or one of several predefined "playground" literals including colors, resource file paths, and resource images.</p><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class="">Swift literals do not have types. They are universal representations that are evaluated and their types inferred from the context in which they are used. Because their nature is typeless, the same color literal can initialize <code style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; padding: 0.2em 0px; margin: 0px; background-color: rgba(0, 0, 0, 0.0392157); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;" class="">UIColor</code>, <code style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; padding: 0.2em 0px; margin: 0px; background-color: rgba(0, 0, 0, 0.0392157); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;" class="">NSColor</code>, and <code style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; padding: 0.2em 0px; margin: 0px; background-color: rgba(0, 0, 0, 0.0392157); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;" class="">SKColor</code> instances. The type cannot be inferred from the source without the context of its destination.</p><pre style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; word-wrap: normal; padding: 16px; overflow: auto; background-color: rgb(247, 247, 247); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; color: rgb(51, 51, 51);" class=""><code style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0px; margin: 0px; background-color: transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit; word-wrap: normal;" class="">let color = #colorLiteral(red: 0.8100712299, green: 0.1511939615, blue: 0.4035313427, alpha: 1)
</code></pre><h2 style="box-sizing: border-box; margin-top: 1em; margin-bottom: 16px; line-height: 1.225; font-size: 1.75em; padding-bottom: 0.3em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(238, 238, 238); color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; background-color: rgb(255, 255, 255);" class=""><a id="user-content-detailed-design" class="anchor" href="https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c#detailed-design" aria-hidden="true" style="box-sizing: border-box; background-color: transparent; -webkit-text-decoration-skip: objects; color: rgb(64, 120, 192); text-decoration: none; display: inline-block; padding-right: 2px; margin-left: -18px; line-height: 1;"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Detailed Design</h2><table style="box-sizing: border-box; border-spacing: 0px; border-collapse: collapse; margin-top: 0px; margin-bottom: 16px; display: block; width: 888px; overflow: auto; word-break: keep-all; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class=""><tbody style="box-sizing: border-box;" class=""><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><th colspan="3" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class=""><i style="box-sizing: border-box;" class="">Namespace redesign<i style="box-sizing: border-box;" class=""></i></i></th></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><th width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Kind</th><th width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Literal</th><th width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Parameters</th></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Color</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.color(red:, green:, blue:, alpha:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">floating point values</td></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Image</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.image(resourceName:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">String with resource name</td></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">File</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.file(resourceName:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">String with resource name</td></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><th colspan="3" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class=""><i style="box-sizing: border-box;" class="">General<i style="box-sizing: border-box;" class=""></i></i></th></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><th width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Kind</th><th width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Literal</th><th width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Parameters</th></tr><tr style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Sound</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.audio(resourceName:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">String with resource name</td></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">URL</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.url(string:)`, `#literal.url(filePath:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">String with resource location</td></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Font</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.font(face:, size:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">string, floating point</td></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Date</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.date(timeInterval:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">floating point offset from Unix epoch</td></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Unicode</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.unicode(name:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Official unicode name, e.g. `#literal.unicode(name:"DOG FACE")`</td></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><th colspan="3" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class=""><i style="box-sizing: border-box;" class="">Geometry<i style="box-sizing: border-box;" class=""></i></i></th></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><th width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Kind</th><th width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Literal</th><th width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Parameters</th></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Point</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.point(x:, y:)`, `#literal.point(x:, y:, z:)`, `#literal.point(x:, y:, z:, w:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">floating point values</td></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Vector</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.vector(dx:, dy:)`, `#literal.vector(dx:, dy:, dz:)`, `#literal.vector(dx:, dy:, dz:, dw:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">floating point</td></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Size</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.size(width:, height:)`, `#literal.size(width:, height:, depth:)` </td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">floating point</td></tr><tr width="500" style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Rect</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.rect(x:, y:, width:, height:)`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">floating point</td></tr><tr width="500" style="box-sizing: border-box; border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Affine Transform</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.affineTransform(a:,b:,c:,d:,tx:,ty:)`, `#literal.affineTransform(translateX:, translateY:)`, `#literal.affineTransform(scaleY:, scaleY:)`, `#literal.affineTransform(rotation:)`, </td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">floating point</td></tr><tr style="box-sizing: border-box; background-color: rgb(248, 248, 248); border-top-width: 1px; border-top-style: solid; border-top-color: rgb(204, 204, 204);" class=""><td width="100" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">Bezier Path</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">`#literal.bezier("M92.21,24.29H75L73,17a8.32,8.32, 0,0,0-8.27-6.74H34.55A7.69,7.69,0,0,0,27,16.6l-2.08 4z")`</td><td width="200" style="box-sizing: border-box; padding: 6px 13px; border: 1px solid rgb(221, 221, 221);" class="">String with SVG path notation</td></tr></tbody></table><h4 style="box-sizing: border-box; margin-top: 1em; margin-bottom: 16px; line-height: 1.4; font-size: 1.25em; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; background-color: rgb(255, 255, 255);" class=""><a id="user-content-not-included" class="anchor" href="https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c#not-included" aria-hidden="true" style="box-sizing: border-box; background-color: transparent; -webkit-text-decoration-skip: objects; color: rgb(64, 120, 192); text-decoration: none; display: inline-block; padding-right: 2px; margin-left: -18px; line-height: 1.2;"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Not included:</h4><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class=""><span style="box-sizing: border-box;" class="">Attributed Strings</span>: I would like to see a way to define attributed strings (using some system like CSS/HTML) but could not think up a simple representation similar to the others mentioned in the preceding table.</p><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class=""><span style="box-sizing: border-box;" class="">JSON Literals</span>: Again, probably too complex and possibly not worth their weight. If they could exist, they'd have to be imported via a resource or URL and transformed to a local type.</p><h2 style="box-sizing: border-box; margin-top: 1em; margin-bottom: 16px; line-height: 1.225; font-size: 1.75em; padding-bottom: 0.3em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(238, 238, 238); color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; background-color: rgb(255, 255, 255);" class=""><a id="user-content-impact-on-existing-code" class="anchor" href="https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c#impact-on-existing-code" aria-hidden="true" style="box-sizing: border-box; background-color: transparent; -webkit-text-decoration-skip: objects; color: rgb(64, 120, 192); text-decoration: none; display: inline-block; padding-right: 2px; margin-left: -18px; line-height: 1;"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Impact on Existing Code</h2><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class="">This proposal is purely additive.</p><h2 style="box-sizing: border-box; margin-top: 1em; margin-bottom: 16px; line-height: 1.225; font-size: 1.75em; padding-bottom: 0.3em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(238, 238, 238); color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; background-color: rgb(255, 255, 255);" class=""><a id="user-content-alternatives-considered" class="anchor" href="https://gist.github.com/erica/c92f6ab115af89d5c4b9161487df6a3c#alternatives-considered" aria-hidden="true" style="box-sizing: border-box; background-color: transparent; -webkit-text-decoration-skip: objects; color: rgb(64, 120, 192); text-decoration: none; display: inline-block; padding-right: 2px; margin-left: -18px; line-height: 1;"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Alternatives Considered</h2><div style="box-sizing: border-box; margin-top: 0px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255); margin-bottom: 0px !important;" class="">Using distinct literal names without subsuming them into a namespaced umbrella.</div></div></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></blockquote></div><br class=""></div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></div></body></html>