Oh yup I thought that was the case but wanted to check. I've started experimenting with ways to achieve this but I am getting massive amounts of code generated compared to Unitful. I just uploaded uploaded my work so far at https://GitHub.com/jkroso/units.jl. If anyone could help explain the difference in code gen that would be great and I'll try contribute back to Unitful On Thu, 18 Feb 2016 at 7:02 AM Andrew Keller <[email protected]> wrote:
> Hi Jake, > > I agree with Jeffrey's response mostly, but want to clarify that Unitful > is not strictly focused on the SI system. You'll see that you can use units > of acre-feet, very much not an SI unit, which could be useful if you happen > to manage a water reservoir in the United States, I guess. > > If you were instead asking whether or not you could write methods that > dispatch on the dimensions of a unit, the current answer is no, although > maybe that could change eventually. > > Best, > Andrew > > On Wednesday, February 17, 2016 at 3:25:37 AM UTC-8, Jeffrey Sarnoff wrote: >> >> Jake, >> >> Julia's type system is well suited to do just that. Unitful is focused >> on units in SI system, things like Meters, Kilograms and Joules. >> >> One approach to abstract units like size, where size may be relative to >> the number of pixels on a screen or the width of a page, >> is define your own type, a kind of size relative to something. In your >> example, s is not a unit of measure (strictly speaking); >> s is a quantity interpreted in terms of some absolute or relative unit of >> measure -- 5 pixels, 1/4 page. Because pixels and pages >> are not always the same number of, say, millimeters, using SI units for >> that abstraction likely is not what you want. >> >> If you want more guidance, please give some more context. >> >> On Wednesday, February 17, 2016 at 4:43:13 AM UTC-5, Jake Rosoman wrote: >>> >>> Is it possible to talk about abstract types of units like size. e.g >>> `drawline(s::Size) = ...`? >>> >>> On Saturday, February 13, 2016 at 9:23:22 AM UTC+13, Andrew Keller wrote: >>>> >>>> I'm happy to share a package I wrote for using physical units in Julia, >>>> Unitful.jl <https://www.github.com/ajkeller34/Unitful.jl>. Much credit >>>> and gratitude is due to Keno Fischer for the SIUnits.jl >>>> <https://www.github.com/keno/SIUnits.jl> package which served as my >>>> inspiration. This is a work in progress, but I think perhaps a serviceable >>>> one depending on what you're doing. >>>> >>>> Like SIUnits.jl, this package encodes units in the type signature to >>>> avoid run-time performance penalties. From there, the implementations >>>> diverge. The package is targeted to Julia 0.5 / master, as there are some >>>> limitations with how promote_op is used in Julia 0.4 (#13803) >>>> <https://github.com/JuliaLang/julia/pull/13803>. I decided it wasn't >>>> worth targeting 0.4 if the behavior would be inconsistent. >>>> >>>> Some highlights include: >>>> >>>> - Non-SI units are treated on the same footing as SI units, with >>>> only a few exceptions (unit conversion method). Use whatever weird >>>> units you want. >>>> - Support for units like micron / (meter Kelvin), where some of the >>>> units could cancel out but you don't necessarily want them to. >>>> - Support for LinSpace and other Range types. Probably there are >>>> still some glitches to be found, though. >>>> - Support for rational exponents of units. >>>> - Some tests (see these for usage examples). >>>> >>>> Please see the documentation for a comprehensive discussion, including >>>> issues / to do list, as well as how to add your own units, etc. >>>> Comments and feedback are welcome. >>>> >>>> Best, >>>> Andrew Keller >>>> >>>
