On Fri, Jun 5, 2015 at 4:25 PM, Matt Rice <[email protected]> wrote: > On Fri, Jun 5, 2015 at 12:26 PM, Matt Oliveri <[email protected]> wrote: >> On Fri, Jun 5, 2015 at 5:46 AM, Keean Schupke <[email protected]> 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). >> >> This doesn't add up. If a's a polygon, what is (a -> b)? How do you >> take arguments that are elements of a polygon? >> >> Or did you mean for "a" to be some type that can represent right >> triangles, and not an element of a generic polygon type? That would >> make more sense. >> >>> 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. >> >> Well first of all, Matt Rice started with just Triangle, hard-coded to >> have three points. If you start with polygon, then yeah, you could >> refine down to triangles, right triangles, squares, regular septagons, >> or whatever. >> >> You have a point about wanting to be able to optimize area for >> particular polygon types. Type classes may indeed be better than >> refinements for this. I didn't mean to argue otherwise. This started >> as an example of how you _could_ use refinement types, I thought. >> (Since this is the "refinement types" thread.) > > In general that was intended to job peoples memory about the example I > used in the previous thread where this same issue had come up before > having (different assertions for the values of related types), I > wasn't really trying to use it as an example of a refinement type > specifically
I'm starting to think the three of us are talking about three different things. I guess I don't know what you're talking about, but you helped find something new for Keean and me to argue about. _______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
