<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">that much unit safety with numbers. But when I read "epic typesafe calculations", that's what I think about.</span></div></blockquote></div>me to ;-) — and I want this to work with force vectors, matrices and tensors as well.<div class="">But I'm quite sure that composed units are the hardest part, and I don't think it will be possible in Swift 3.</div><div class=""><br class=""></div><div class="">I would like to start with tiny steps, and afaics, we miss a protocol that denotes that something can be added and substracted, don't we?</div><div class=""><br class=""></div><div class="">So, I think a first tiny proposal would be to add protocols for groups, rings &amp; bodys, and add make the numeric types conform to them.</div><div class=""><br class=""></div><div class="">Meanwhile, I pushed a tiny playground to github - it is quite chaotic, but it allows you to do stuff like</div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> f0 = <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">Force</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #31595d" class="">Newton</span>(<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">1</span>)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">let</span> f1 = <span style="font-variant-ligatures: no-common-ligatures; color: #4f8187" class="">Force</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #31595d" class="">Kilopound</span>(<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">1</span>)</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;" class=""><span style="color: rgb(61, 29, 129);" class="">print</span>(<span style="color: rgb(39, 42, 216);" class="">10.0</span><span style="color: rgb(49, 89, 93);" class="">*</span><span style="color: rgb(79, 129, 135);" class="">f0</span> <span style="color: rgb(49, 89, 93);" class="">+</span> <span style="color: rgb(79, 129, 135);" class="">f1</span><span style="color: rgb(49, 89, 93);" class="">/</span><span style="color: rgb(39, 42, 216);" class="">444.8221615255</span>)</div></div><div class=""><br class=""></div><div class=""><a href="https://github.com/SwiftTypesafeCalculations/Units" class="">https://github.com/SwiftTypesafeCalculations/Units</a></div><div class=""><br class=""></div><div class="">I did also start an "organization" at github and to see how this infrastructure can be leveraged to channel the discussion without loosing track.</div><div class=""><br class=""></div><div class="">Tino</div></body></html>