<div dir="ltr"><div dir="ltr">Hi Julien,<div><br></div><div>Thank you.</div><div><br></div><div><i>re: I wouldn't do that however; it seems like a terribly complicated way to<br>learn about Mercury.</i></div><div><i><br></i></div><div>Since I have a rather large Prolog code base, its not feasible to rewrite it all in Mercury. Also, much of it wouldn't benefit from such a rewrite; and some code can not be rewritten, as far as can tell, since it makes extensive use of term_expansion pre-processing (essentially a Prolog based Domain Specific Language - DSL).</div><div><br></div><div>There are however core areas where I am contemplating a rewrite in C++ -- and am now thinking that Mercury could be a better choice.</div><div><br></div><div>Btw, the idea to make it easy to porting small parts as needed is also included in the Rust language, which makes it easy to interoperate with C++.</div><div><br></div><div>Daniel</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 4, 2019 at 6:27 AM Julien Fischer <<a href="mailto:jfischer@opturion.com" target="_blank">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 Daniel,<br>
<br>
On Wed, 3 Jul 2019, Daniel Gross wrote:<br>
<br>
> I am playing with he thought to rewrite some predicates in swi-prolog<br>
> in Mercury. This could allow me to work in a piece by piece manner, as<br>
> I explore and learn more about Mercury.<br>
> <br>
> Are there examples out there that show how this could be best done?<br>
<br>
With SWI-Prolog specifically, not that I'm aware of.<br>
<br>
> I guess, it would require exporting to C and then, somehow, wrapping<br>
> that C into an  external swi predicate ...<br>
<br>
Based on a cursory glance at SWI-Prolog's foreign language interface<br>
it should in principle be possible.<br>
<br>
    1. Export the Mercury procedures to C<br>
    2. Implement code in C to convert Mercury terms into Prolog ones.<br>
    3. Wrap all of the above up using SWI-Prolog's foreign language<br>
       interface into a library.<br>
    4. Arrange for the Prolog system to load and initialise Mercury's<br>
       runtime and standard libraries, and the library create in (3).<br>
<br>
I wouldn't do that however; it seems like a terribly complicated way to<br>
learn about Mercury.<br>
<br>
Julien.</blockquote></div><br clear="all"><div><br></div>
</div>