%---------------------------------------------------------------------------% % vim: ts=4 sw=4 et ft=mercury %---------------------------------------------------------------------------% % % This module tests the case of calling a semidet pred in % a nondet lambda expression; Mercury-0.4 got this case wrong. :- module semidet_lambda. :- interface. :- import_module io. :- pred main(io__state::di, io__state::uo) is det. :- implementation. :- import_module list. :- import_module solutions. main --> { q(Y) }, ( { Y = [Z] } -> io__write_int(Z), io__write_string("\n") ; io__write_string("Hello, world\n") ). :- pred p(int::out) is semidet. p(42). :- pred q(list(int)::out) is det. q(Y) :- solutions((pred(X::out) is nondet :- p(X)), Y).