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? > • 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. -- -Dave _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users