Jake,

It would be helpful to know more clearly what is the "this" that you are 
experimenting with "ways to achieve this"?  
I took a glance at your code, and one thing that is happening is you have 
left some low-hanging abstraction on the table.  That constrains Julia's 
ability to simplify through organized multidispatch.  I will give it more 
than a glance overnight -- pretend it all works perfectly, show me what you 
want to do with it then.
   

On Wednesday, February 17, 2016 at 3:59:15 PM UTC-5, Jake Rosoman wrote:
>
> 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] 
> <javascript:>> 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
>>>>>
>>>>

Reply via email to