<html><head><meta http-equiv="content-type" content="text/html; charset=us-ascii"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>The error:</div><div><br></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">repl.m:738: In `take_gencall'(in, out, in, out, in, out):</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">repl.m:738: error: determinism declaration not satisfied.</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">repl.m:738: Declared `det', inferred `semidet'.</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">repl.m:747: In clause for `take_gencall(in, out, in, out, in, out)':</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">repl.m:747: warning: unification of `Out' and maybe.yes cannot succeed.</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">repl.m:747: `Out' has instantiatedness `unique(no)'.</span></font></div><div><br></div><div>The code:</div><div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"><br></span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">:- pred take_gencall(error_msg::in, maybe(snode)::out, s::in, s::out,</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> lsnode::in, lsnode::out) is det.</span></font></div><div><br></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;">take_gencall(Er, Out, !S) --></span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> ( if no_errors(!.S) then</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> ( if [GC] then</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> { Pos = snpos(GC) },</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> ( if { GC = gencall(_, _, _) } then</span></font></div><div><b style="font-style: normal;"><font face="American Typewriter" size="4"> { Out = yes(GC) } <== line 747</font></b></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> else</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> cerror(Pos, Er, !S),</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> { Out = no }</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> )</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> else</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> premature(!S)),</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> { Out = no }</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> else</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> { Out = no }</span></font></div><div><font face="American Typewriter" size="4"><span style="font-style: normal;"> ).</span></font></div></div><div><br></div><div>For the life of me I don't understand why the line in bold is causing an error, why has Out become `unique(no)` and does that no refer to a general no or is it the no from the may() discriminated union, I just don't see my mistake. Sorry.</div><div><br></div><div>Thanks,</div><div>Sean.</div><div><br></div><div><br></div></body></html>