[m-dev.] shims

Mark Brown mark at mercurylang.org
Mon Sep 15 15:42:05 AEST 2014

On Mon, Sep 15, 2014 at 3:20 PM, Julien Fischer <jfischer at opturion.com> wrote:
> On Fri, 12 Sep 2014, Peter Wang wrote:
>> On Thu, 11 Sep 2014 17:26:04 +1000, Peter Wang <novalazy at gmail.com> wrote:
>>> Ideally you could update code immediately but maintain a fallback for
>>> older libraries.  I don't think there is a way to do it currently, so
>>> perhaps it is time for another pragma, e.g.
>>>     :- pragma shim(p/1, other.p/1).
>>>     p(X) :- ...
>> This could not cope with predicates which just have their arguments
>> reordered (hopefully a rare occurrence).

If you require that other.p/1 not only exists, but has the same
signature as p/1, then I think it will cope so long as the arguments
don't have the same type.

(If the signatures don't change, my proposal wouldn't cope either.)

> Over the past few years it's been a very common occurrence in Mercury's
> standard library.  (I'll grant that those reorderings were primarily
> legacy issues and that APIs built against a current version of Mercury
> are unlikely to have the same sort of problems.)

In most of these cases the arguments have different types so the
signature has changed, right?


More information about the developers mailing list