<div dir="ltr"><div>Julien,</div><div><br></div><div>Thanks again for the C# example in the repo! I think my use case for "assert" and "retract" is the exact one described on page 4 of the Prolog to Mercury transition guide, "Most uses of assert and retract in Prolog programs are not actually intended to alter the program. Their purpose is just to maintain a set of facts, with semantically separate sets of facts being stored in separate predicates." I won't need to define new predicates or rules during runtime, but I may want to change the assignment of terms to predicates, for example, whether "is_citrus(orange)" from the C# side. My questions below relate to this need:<br></div><div><br></div><div>(1) Would I just build a list of (predefined) terms of type fruit and send them to "is_citrus(fruit::in)" like you did with "cube(int)"? <br></div><div>(2) How would I remove one or more assignments, e.g. so the database is silent on whether orange is_citrus?<br></div><div>(3) How about members of types, could I add the new term "kiwi" to the list of type fruit during runtime and have it exported automatically for reference in C#?</div><div><br></div><div>-david<br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div><br></div><div><br></div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jan 15, 2022 at 5:03 AM Julien Fischer <<a href="mailto:jfischer@opturion.com">jfischer@opturion.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Hi David,<br>
<br>
On Fri, 14 Jan 2022, David Epstein wrote:<br>
<br>
> Thank you for adding a csharp interface example under "samples"! I'm<br>
> studying it now. Do you happen to know if the Mercury compiler creates<br>
> a DLL file that is compatible with Xamarin.Forms and mobile<br>
> development? <br>
<br>
I have not tried it with Xamarin.Forms, nor have I heard from anyone who<br>
has.  The C# code the Mercury compiler emits doesn't depend on anything<br>
other than standard C# languages constructs and what's in the C# version<br>
of the Mercury runtime and standard library; the DLLs should be fairly<br>
portable.<br>
<br>
Any Mercury code will you include in an application will have a<br>
dependency on mer_std.dll (i.e. the DLL containing the Mercury runtime<br>
and standard library).  Again, I think most of that should be fairly<br>
portable -- if you encounter something that isn't let us know.<br>
<br>
Julien.</blockquote></div></div>