On Fri, Jun 5, 2015 at 7:02 AM, Matt Rice <ratm...@gmail.com> wrote:
> On Fri, Jun 5, 2015 at 3:47 AM, Keean Schupke <ke...@fry-it.com> wrote:
>>
>>
>> On 5 June 2015 at 11:36, Matt Rice <ratm...@gmail.com> wrote:
>>>
>>> On Fri, Jun 5, 2015 at 2:46 AM, Keean Schupke <ke...@fry-it.com> wrote:
>>> > I don't understand, you just use type-classes:
>>> >
>>> > area :: (RightTriangle a b, Numeric b) => a -> b
>>> >
>>> > RightTrianlge is a constraint on the polygon "a" with points of type "b"
>>> > (Int or Float etc).
>>> >
>>> > Only the algorithm used in areaOfRightTriangle knows the type of
>>> > triangle
>>> > required for the area operation, not the triangle itself.
>>> >
>>> > I can have other triangle area definitions too:
>>> >
>>> > area :: (Square a b, Numeric b) => a -> b
>>> >
>>> > WIth suitable overloads I can call 'area' on any polygon, and I will get
>>> > the
>>> > most efficient algorithm for that type of polygon automatically.
>>> >
>>>
>>> I guess I don't understand how this in any way affects what I was
>>> replying to, which was coalescing assertions on types that were not
>>> abstract...
>>>
>>> but in reality probably just more comfortable/familiar with the keykos
>>> model of lambda calculus which doesn't assume you'd ever want to give
>>> out a constructor...
>>
>>
>> My point was you do not want assertions on types, abstract or not.
>
> I don't think we disagree here, I was (at least in my earlier emails)
> trying to leave open the possibility that an assertion is memoized and
> inextricably linked to the value, I probably lost this distinction
> along the way, sorry...

But with refinement types, the rightness of a triangle (for example)
is not actually stored anywhere at runtime, and it isn't necessarily
dynamically checked by anyone either. If I make the constant triangle
[(0,0),(0,3),(4,0)], we can statically see that it's right, and give
it type RightTriangle, without runtime having any trace of it being
right.

So I don't know why you're talking about memoizing assertions, as if
refinement types were some runtime checking apparatus.
_______________________________________________
bitc-dev mailing list
bitc-dev@coyotos.org
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to