__WhereRef/WhereVal peeling, #ifdef and related experiments

Gavin Bierman gavin.bierman at oracle.com
Mon Jan 19 11:15:53 UTC 2015

The “meet” terminology comes from maths: given a partially ordered set S, the meet of a subset of S is the greatest lower bound (if it exists). 

In OO type systems, it is typically used in the context of overloading: e.g. if you have overloads whose argument types have a common lower bound (i.e. a common subtype) then you must have an overload with argument types of that common lower bound.

For example, Fortress had such a restriction (see section 1):


Hope this helps,

> On 19 Jan 2015, at 01:27, Thomas W <twhitmore.nz at gmail.com> wrote:
> Thanks Brian. As I noted, Maurizio's patch is not a real syntax..  just a
> hack to take experimentation further.
> Brian doesn't want to discuss syntaxes, nor was my intent to suggest such
> -- just to move the concepts away from preprocessors, #ifdef and
> single-dimensionality.
> There are many ways to slice type-casing; your example shows one (though
>> you need a "meet rule" when you get to the multiple-tvar case), but there
>> are others.
> My post specifically raised the possibility of multiple-tvar cases, and
> suggested a simple rectilinear approach in multi-dimensional space. There
> would need to be order of precedence in match rules, but no interaction
> would exist between separate clauses.
> I'm having difficulty Googling an exact definition for "meet rule" -- if
> you want to email a definition privately, I'd appreciate -- but apart from
> most-specific L-to-R order of precedence, no such rule would be needed.
> Let me know if anything is unclear.
> Regards,
> Thomas

More information about the valhalla-dev mailing list