Notes |
|
(0000793)
|
wangp
|
2014-10-09 11:44
|
|
|
|
(0000843)
|
mark
|
2015-07-15 11:37
|
|
A workaround for this is to use an explicit pred expression. For the lambda.m example, write:
P = (pred(Z::out(bound(1))) is det :- id(1, Z))
This will ensure that the inst variable for call to id/2 is bound in the way that is intended. |
|
|
(0000966)
|
wangp
|
2018-03-06 15:31
|
|
While investigating something else, I found that modecheck_higher_order_call calls inst_expand which does not look past a top-level node of constrained_inst_vars. So this does not work, but I think there is no reason it should not work.
:- inst b == (pred(in) is semidet).
:- pred p2(pred(int)::in(I)) is semidet <= I =< b.
p2(X) :- X(42). |
|
|
(0000967)
|
wangp
|
2018-03-06 15:45
|
|
The compiler crashes on create_test_unification.m:
Software Error: predicate `parse_tree.prog_mode.get_arg_insts'/4: Unexpected: defined_inst
simplify_goal_switch.create_test_unification calls inst_expand (which does not touch an inst with constrained_inst_vars at the top level) followed by get_arg_insts (which expects the inst to be expanded). |
|