> On Dec 1, 2016, at 11:36 , Dave Abrahams via swift-users > <swift-users@swift.org> wrote: > > > on Mon Nov 28 2016, Rick Mann <swift-users-AT-swift.org> wrote: > >> My earlier post about converting Decimal to Double was part of a >> larger effort by me to write a calculator app that supports >> dimensional analysis/unit conversions. I've explored some existing >> libraries on the topic, ranging from this one in Common Lisp >> (<http://www.cs.utexas.edu/users/novak/units95.html>) to this >> nice-looking C++ header-only implementation >> (<https://github.com/nholthaus/units>). Here's one done in Swift >> (<https://github.com/michalkonturek/MKUnits>), which has similarities >> to the C++ library. >> >> My calculator allows expressions like this: >> >> 1-3/4" x 2 + (4.3 mm + 0.1") -> <XX> mm >> >> And produces values in both inch and mm, but I want to be able to expand >> that to more units. >> >> I also want to support proper dimensional analysis: >> >> 2 mm x 4" -> 203.2 mm^2 >> >> While my calculator generally only works with lengths, areas, and angles, I >> figure a general-purpose >> dimensional analysis library would be useful. >> >> Dimensional analysis has come up before >> (<https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160111/006596.html> >> and >> <https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160229/011666.html>). >> It >> seems support for constant expressions is useful for dimensional >> analysis, and Swift doesn't currently support that. >> >> Given that limitation, what approach would the gurus recommend? The library >> should support: >> >> • Generating a result with derived units based on the input >> • Simplifying composite units to some canonical form >> • Validating conversion from one (derived) unit to another >> • Supporting leniency in conversions (e.g. conflating lb and lb•f). > > Is that conflating pounds with foot-pounds? If so that seems > undesirable, and also incompatible with the very next bullet. If not, > what are you suggesting?
lb and lb-force. They are mass and force, respectively, but in a 1-gee gravity field, they result in the same value. Ideally, the library would support being lenient, if desired, but with the (usual) option of being strict. > >> • Compile-time errors when mixing incompatible types. > > Because of the lack of numeric generic parameters in Swift, we don't > know how to create a library that satisfies the latter requirement. Right, that's what I gathered from the older posts touching on the subject. -- Rick -- Rick Mann rm...@latencyzero.com _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users