Quoth sirjofri via 9fans <[email protected]>:
> Hi,
>
> I just had a quick thought about using typestr in libgeometry. However, I
> noticed that typestr is nowhere used in 9front at all (besides the compiler
> that implements it as a feature).
>
> Thinking about how typestr provides pretty cool syntactic sugar, I was
> wondering why that's the case? Is there a goal to maintain the C standard as
> far as it makes sense, or is it compatibility between plan 9 systems?
>
> Before thinking about it too much, I just ask here.
>
> I personally only use it in some cases where it makes sense, in cases similar
> to the complex number example I was able to find online[1]. I don't think it
> should be used to hide things, just to provide the ability to write code
> that's easier to read and understand. For example, instead of combining
> matrices using functions, I could just type S * R * S, or to add vectors, I
> can just V + W. For plan 9, adding Points would be trivial.
>
> Note that I'm _not_ proposing to update all of the routines to use this
> feature. I'd just like to know your thoughts about using it (or not using it).
>
> sirjofri
>
> [1] https://github.com/henesy/plan9-typestr/blob/master/typestr.md
>
It's a subtly wrong feature -- it looks cute, but doesn't
generalize well in C. Finishing it would imply garbage
collection (or at least destructors), which have their
own disadvantages.
It may work for some things. This, for example, is fine:
typestr mpint ...;
mpint *x = mpnew(42);
mpint *y = mpnew(123);
mpint *z = x * y; //ok, fine
mpfree(x);
mpfree(y);
but what about:
mpint *x = mpnew(42);
mpint *y = mpnew(123);
mpint *z = x * (y - x) * (y - x);
mpfree(x);
mpfree(y);
There are intermediate expressions along the way
which would need to be allocated; who frees them?
------------------------------------------
9fans: 9fans
Permalink:
https://9fans.topicbox.com/groups/9fans/T7ee24291af957db7-Med8867431e94207a85d17a06
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription