From: Sergio C. <ser...@ya...> - 2013-03-18 12:45:57
|
I am wondering how important is for XSB the support for proper Hilog terms (i.e. compounds having as functors arbitrary terms). Are there many XSB projects currently using this feature ? which of them for example ? I ask since as far as I understand higher order programming is equally possible using the ISO built-in call/N. Specifically, I would like to understand if the usage of Hilog terms have further applications and if it is still regarded as a powerful feature in a Prolog like logic language, or if it is supported in XSB rather for historical reasons. cheers, Sergio |
From: Sergio C. <ser...@ya...> - 2013-03-18 21:55:09
|
I see. And about Silk is the same story ?. It also uses its own implementation of HiLog instead of XSB's native one ? I am wondering if a correct conclusion of this is that I should avoid to use the XSB implementation of HiLog in new Prolog projects ?, and if eventually I am interested in doing something with HiLog in the future I should take a look to Flora ? -Sergio >________________________________ > De : David Warren <wa...@cs...> >À : Miguel Calejo <mc...@de...>; Sergio Castro <ser...@ya...> >Cc : "xsb...@li..." <xsb...@li...> >Envoyé le : Lundi 18 mars 2013 21h03 >Objet : RE: [Xsb-development] Question about Hilog terms in XSB > > > >Actually Flora, which is implemented with a translator to XSB source code, does support the Flora version of HiLog. But it does not use XSB’s implementation of HiLog. It uses its own translation to standard prolog predicates. Michael Kifer (and his student who wrote the Flora compiler) found that XSB’s support for HiLog did not really provide the functionality they wanted, so they rolled their own. >-David > >From:Miguel Calejo [mailto:mc...@de...] >Sent: Monday, March 18, 2013 10:50 AM >To: Sergio Castro >Cc: xsb...@li... >Subject: Re: [Xsb-development] Question about Hilog terms in XSB > >Rather important: http://flora.sourceforge.net/ , http://silk.semwebcentral.org/ >On Mar 18, 2013, at 12:45 , Sergio Castro wrote: > > > > >I am wondering how important is for XSB the support for proper Hilog terms (i.e. compounds having as functors arbitrary terms). Are there many XSB projects currently using this feature ? which of them for example ? >I ask since as far as I understand higher order programming is equally possible using the ISO built-in call/N. >Specifically, I would like to understand if the usage of Hilog terms have further applications and if it is still regarded as a powerful feature in a Prolog like logic language, or if it is supported in XSB rather for historical reasons. > >cheers, > >Sergio > >------------------------------------------------------------------------------ >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ >Xsb-development mailing list >Xsb...@li... >https://lists.sourceforge.net/lists/listinfo/xsb-development > > > |
From: Sergio C. <ser...@ya...> - 2013-03-18 22:03:31
|
The predicate read_atom_to_term/3 is answering an open list of variables (in its third argument), like in this example: ?- read_atom_to_term('x(Var)', T, V). T = x(_h248) V = [vv(Var,_h248)|_h254]; Is this a bug ?. cheers, Sergio |
From: Michael K. <mic...@st...> - 2013-03-18 23:28:26
|
<html style="direction: ltr;"> <head> <meta content="text/html; charset=windows-1252" http-equiv="Content-Type"> <style type="text/css">body p { margin-bottom: 0cm; margin-top: 0pt; } </style> </head> <body style="direction: ltr;" bidimailui-detected-decoding-type="latin-charset" text="#000000" bgcolor="#FFFFFF"> <br> <div class="moz-cite-prefix">On 03/18/2013 05:55 PM, Sergio Castro wrote:<br> </div> <blockquote cite="mid:db876a53f05d4967947de1e00e7a4036@HUBCAS1.cs.stonybrook.edu" type="cite"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"> I see. And about Silk is the same story ?. It also uses its own implementation of HiLog instead of XSB's native one ?<br> </div> </blockquote> <br> Yes. SILK is actually a layer on top of flora. <br> <br> <blockquote cite="mid:db876a53f05d4967947de1e00e7a4036@HUBCAS1.cs.stonybrook.edu" type="cite"> <div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"> <br> I am wondering if a correct conclusion of this is that I should avoid to use the XSB implementation of HiLog in new Prolog projects ?</div> </blockquote> <br> The main problem with the implementation of HiLog in XSB is that it does not work well with modules and there are other surprises.<br> Flora avoids using XSB modules altogether and instead implements its own module system, which is integrated with HiLog.<br> <br> <blockquote cite="mid:db876a53f05d4967947de1e00e7a4036@HUBCAS1.cs.stonybrook.edu" type="cite"> <div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"> and if eventually I am interested in doing something with HiLog in the future I should take a look to Flora ?<br> </div> </blockquote> <br> Flora is much more than just HiLog, so you might want to look into it for other reasons also. <br> <br> --<br> <br> --- michael<br> <br> <br> <blockquote cite="mid:db876a53f05d4967947de1e00e7a4036@HUBCAS1.cs.stonybrook.edu" type="cite"> <div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"> <br> -Sergio<br> <br> <div><br> <blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;"> <div style="font-family: arial, helvetica, sans-serif; font-size: 12pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"><font size="2" face="Arial"> <hr size="1"> <b><span style="font-weight:bold;">De :</span></b> David Warren <a class="moz-txt-link-rfc2396E" href="mailto:wa...@cs..."><wa...@cs...></a><br> <b><span style="font-weight: bold;">À :</span></b> Miguel Calejo <a class="moz-txt-link-rfc2396E" href="mailto:mc...@de..."><mc...@de...></a>; Sergio Castro <a class="moz-txt-link-rfc2396E" href="mailto:ser...@ya..."><ser...@ya...></a> <br> <b><span style="font-weight: bold;">Cc :</span></b> <a class="moz-txt-link-rfc2396E" href="mailto:xsb...@li...">"xsb...@li..."</a> <a class="moz-txt-link-rfc2396E" href="mailto:xsb...@li..."><xsb...@li...></a> <br> <b><span style="font-weight: bold;">Envoyé le :</span></b> Lundi 18 mars 2013 21h03<br> <b><span style="font-weight: bold;">Objet :</span></b> RE: [Xsb-development] Question about Hilog terms in XSB<br> </font></div> <br> <div id="yiv1196965755"> <style><!-- #yiv1196965755 _filtered #yiv1196965755 {font-family:"Cambria Math";panose-1:2 4 5 3 5 4 6 3 2 4;} _filtered #yiv1196965755 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;} _filtered #yiv1196965755 {font-family:Tahoma;panose-1:2 11 6 4 3 5 4 4 2 4;} #yiv1196965755 #yiv1196965755 p.yiv1196965755MsoNormal, #yiv1196965755 li.yiv1196965755MsoNormal, #yiv1196965755 div.yiv1196965755MsoNormal {margin:0in;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman", "serif";} #yiv1196965755 a:link, #yiv1196965755 span.yiv1196965755MsoHyperlink {color:blue;text-decoration:underline;} #yiv1196965755 a:visited, #yiv1196965755 span.yiv1196965755MsoHyperlinkFollowed {color:purple;text-decoration:underline;} #yiv1196965755 code {font-family:"Courier New";} #yiv1196965755 span.yiv1196965755comment-copy {} #yiv1196965755 span.yiv1196965755EmailStyle19 {font-family:"Calibri", "sans-serif";color:#1F497D;} #yiv1196965755 .yiv1196965755MsoChpDefault {font-size:10.0pt;} _filtered #yiv1196965755 {margin:1.0in 1.0in 1.0in 1.0in;} #yiv1196965755 div.yiv1196965755WordSection1 {} --></style> <div> <div class="yiv1196965755WordSection1"> <div class="yiv1196965755MsoNormal"><span style="font-size:14.0pt;color:#1F497D;">Actually Flora, which is implemented with a translator to XSB source code, does support the Flora version of HiLog. But it does not use XSB’s implementation of HiLog. It uses its own translation to standard prolog predicates. Michael Kifer (and his student who wrote the Flora compiler) found that XSB’s support for HiLog did not really provide the functionality they wanted, so they rolled their own.</span></div> <div class="yiv1196965755MsoNormal"><span style="font-size:14.0pt;color:#1F497D;">-David</span></div> <div class="yiv1196965755MsoNormal"><span style="font-size:11.0pt;color:#1F497D;"> </span></div> <div> <div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in;"> <div class="yiv1196965755MsoNormal"><b><span style="font-size:10.0pt;">From:</span></b><span style="font-size:10.0pt;"> Miguel Calejo [<a class="moz-txt-link-freetext" href="mailto:mc...@de...">mailto:mc...@de...</a>] <br> <b>Sent:</b> Monday, March 18, 2013 10:50 AM<br> <b>To:</b> Sergio Castro<br> <b>Cc:</b> <a class="moz-txt-link-abbreviated" href="mailto:xsb...@li...">xsb...@li...</a><br> <b>Subject:</b> Re: [Xsb-development] Question about Hilog terms in XSB</span></div> </div> </div> <div class="yiv1196965755MsoNormal"> </div> <div class="yiv1196965755MsoNormal">Rather important: <a moz-do-not-send="true" rel="nofollow" target="_blank" href="http://flora.sourceforge.net/">http://flora.sourceforge.net/</a> , <a moz-do-not-send="true" rel="nofollow" target="_blank" href="http://silk.semwebcentral.org/">http://silk.semwebcentral.org/</a></div> <div> <div> <div class="yiv1196965755MsoNormal">On Mar 18, 2013, at 12:45 , Sergio Castro wrote:</div> </div> <div class="yiv1196965755MsoNormal"><br> <br> </div> <div> <div> <div> <div class="yiv1196965755MsoNormal" style="background:white;"><span style="color:black;"> </span></div> </div> <div> <div class="yiv1196965755MsoNormal" style="background:white;"><span style="color:black;">I am wondering how important is for XSB the support for proper Hilog terms (i.e. compounds having as functors arbitrary terms). Are there many XSB projects currently using this feature ? which of them for example ?</span></div> </div> <div> <div class="yiv1196965755MsoNormal" style="background:white;"><span style="color:black;">I ask since as far as I understand <span class="yiv1196965755comment-copy">higher order programming is equally possible using the ISO built-in </span></span><code><span style="font-size:10.0pt;color:black;">call/N.</span></code><span style="color:black;"></span></div> </div> <div> <div class="yiv1196965755MsoNormal" style="background:white;"><span style="color:black;">Specifically, I would like to understand if the usage of Hilog terms have further applications and if it is still regarded as a powerful feature in a Prolog like logic language, or if it is supported in XSB rather for historical reasons.</span></div> </div> <div class="yiv1196965755MsoNormal" style="background:white;"><span style="color:black;"><br> cheers,<br> <br> Sergio</span></div> <div> <blockquote style="border:none;border-left:solid #1010FF 1.5pt;padding:0in 0in 0in 4.0pt;margin-left:3.75pt;margin-top:3.75pt;margin-bottom:5.0pt;"> <div class="yiv1196965755MsoNormal" style="background:white;"><span style="color:black;"> </span></div> </blockquote> </div> </div> </div> <div class="yiv1196965755MsoNormal">------------------------------------------------------------------------------<br> Everyone hates slow websites. So do we.<br> Make your web apps faster with AppDynamics<br> Download AppDynamics Lite for free today:<br> <a moz-do-not-send="true" rel="nofollow" target="_blank" href="http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________">http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________</a><br> Xsb-development mailing list<br> <a moz-do-not-send="true" rel="nofollow" ymailto="mailto:Xsb...@li..." target="_blank" href="mailto:Xsb...@li...">Xsb...@li...</a><br> <a moz-do-not-send="true" rel="nofollow" target="_blank" href="https://lists.sourceforge.net/lists/listinfo/xsb-development">https://lists.sourceforge.net/lists/listinfo/xsb-development</a></div> </div> <div class="yiv1196965755MsoNormal"> </div> </div> </div> </div> <br> <br> </div> </div> </blockquote> </div> </div> </blockquote> <br> </body> </html> |
From: Sergio C. <ser...@ya...> - 2013-03-18 23:38:44
|
Thanks a lot Michael. It is quite more clear now. regards, Sergio >________________________________ > De : Michael Kifer <mic...@st...> >À : xsb...@li...; ser...@ya... >Envoyé le : Mardi 19 mars 2013 0h28 >Objet : Re: [Xsb-development] Question about Hilog terms in XSB > > > > > >On 03/18/2013 05:55 PM, Sergio Castro wrote: > >I see. And about Silk is the same story ?. It also uses its own implementation of HiLog instead of XSB's native one ? >> >Yes. SILK is actually a layer on top of flora. > > > >>I am wondering if a correct conclusion of this is that I should avoid to use the XSB implementation of HiLog in new Prolog projects ? >The main problem with the implementation of HiLog in XSB is that it does not work well with modules and there are other surprises. >Flora avoids using XSB modules altogether and instead implements its own module system, which is integrated with HiLog. > > >and if eventually I am interested in doing something with HiLog in the future I should take a look to Flora ? >> >Flora is much more than just HiLog, so you might want to look into it for other reasons also. > >-- > > --- michael > > > > >>-Sergio >> >> >> >> >> >>>________________________________ >>> De : David Warren <wa...@cs...> >>>À : Miguel Calejo <mc...@de...>; Sergio Castro <ser...@ya...> >>>Cc : "xsb...@li..." <xsb...@li...> >>>Envoyé le : Lundi 18 mars 2013 21h03 >>>Objet : RE: [Xsb-development] Question about Hilog terms in XSB >>> >>> >>> >>>Actually Flora, which is implemented with a translator to XSB source code, does support the Flora version of HiLog. But it does not use XSB’s implementation of HiLog. It uses its own translation to standard prolog predicates. Michael Kifer (and his student who wrote the Flora compiler) found that XSB’s support for HiLog did not really provide the functionality they wanted, so they rolled their own. >>>-David >>> >>>From:Miguel Calejo [mailto:mc...@de...] >>>Sent: Monday, March 18, 2013 10:50 AM >>>To: Sergio Castro >>>Cc: xsb...@li... >>>Subject: Re: [Xsb-development] Question about Hilog terms in XSB >>> >>>Rather important: http://flora.sourceforge.net/ , http://silk.semwebcentral.org/ >>>On Mar 18, 2013, at 12:45 , Sergio Castro wrote: >>> >>> >>> >>> >>>I am wondering how important is for XSB the support for proper Hilog terms (i.e. compounds having as functors arbitrary terms). Are there many XSB projects currently using this feature ? which of them for example ? >>>I ask since as far as I understand higher order programming is equally possible using the ISO built-in call/N. >>>Specifically, I would like to understand if the usage of Hilog terms have further applications and if it is still regarded as a powerful feature in a Prolog like logic language, or if it is supported in XSB rather for historical reasons. >>> >>>cheers, >>> >>>Sergio >>> >>>------------------------------------------------------------------------------ >>>Everyone hates slow websites. So do we. >>>Make your web apps faster with AppDynamics >>>Download AppDynamics Lite for free today: >>>http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ >>>Xsb-development mailing list >>>Xsb...@li... >>>https://lists.sourceforge.net/lists/listinfo/xsb-development >>> >>> >>> > > > |
From: Sergio C. <ser...@ya...> - 2013-03-20 23:04:15
|
Hi, Not sure but I think I found a bug in the InterProlog NativeEngine class. Currently the constructor loads the XSB native library with this code: public NativeEngine(String XSB_BIN_DIR, String[] XSB_ARGS, boolean debug, boolean loadFromJar) { super(XSB_BIN_DIR,debug,loadFromJar); numberOfInstances++; if (numberOfInstances > 1) throw new IPException("Can't have more than one instance of NativeEngine"); // On creation of the first NativeEngine instance, the XSB.dll is loaded. // First, xsbBinDir and xsbBinDir\xsb.dll are tested for existence. // If they do exist, then the dll is loaded from this xsb.dll. If // either do not, then the System Path is used to locate xsb.dll. if (numberOfInstances == 1) { File xsbDLLFile = null; if (XSB_BIN_DIR != null) { File providedBinDirectory = new File(XSB_BIN_DIR); xsbDLLFile = new File(providedBinDirectory, "xsb.dll"); } if (isWindowsOS() && xsbDLLFile != null && xsbDLLFile.exists()) { System.load(xsbDLLFile.getAbsolutePath()); } else { System.loadLibrary("xsb"); } } ... } The constructor checks if the library exists in the bin directory sent as first argument. Otherwise it tries to find the library according to the entries in "java.library.path" (with a call to System.loadLibrary("xsb")). The problem is that this will work only on Windows (given the explicit condition "isWindowsOS()"), otherwise the bin directory sent as argument is just ignored and will go directly to try to load the library according to the entries in "java.library.path". Instead, the code should be something like this : if (numberOfInstances == 1) { File libraryFile = null; if (XSB_BIN_DIR != null) { File providedBinDirectory = new File(XSB_BIN_DIR); if(isWindowsOS()) libraryFile = new File(providedBinDirectory, "xsb.dll"); else libraryFile = new File(providedBinDirectory, "xsb"); } if (libraryFile != null && libraryFile.exists()) { System.load(libraryFile.getAbsolutePath()); } else { System.loadLibrary("xsb"); } } --- my two cents :) cheers, Sergio |
From: Miguel C. <mc...@de...> - 2013-03-25 15:51:14
|
You're correct, thanks for fixing that:-) Miguel On Mar 20, 2013, at 23:04 , Sergio Castro wrote: > Hi, > > Not sure but I think I found a bug in the InterProlog NativeEngine class. > > Currently the constructor loads the XSB native library with this code: > > public NativeEngine(String XSB_BIN_DIR, String[] XSB_ARGS, boolean debug, boolean loadFromJar) { > super(XSB_BIN_DIR,debug,loadFromJar); > numberOfInstances++; > if (numberOfInstances > 1) > throw new IPException("Can't have more than one instance of NativeEngine"); > // On creation of the first NativeEngine instance, the XSB.dll is loaded. > // First, xsbBinDir and xsbBinDir\xsb.dll are tested for existence. > // If they do exist, then the dll is loaded from this xsb.dll. If > // either do not, then the System Path is used to locate xsb.dll. > > > if (numberOfInstances == 1) { > File xsbDLLFile = null; > if (XSB_BIN_DIR != null) { > File providedBinDirectory = new File(XSB_BIN_DIR); > xsbDLLFile = new File(providedBinDirectory, "xsb.dll"); > } > if (isWindowsOS() && xsbDLLFile != null && xsbDLLFile.exists()) { > System.load(xsbDLLFile.getAbsolutePath()); > } else { > System.loadLibrary("xsb"); > } > } > ... > > } > > > The constructor checks if the library exists in the bin directory sent as first argument. Otherwise it tries to find the library according to the entries in "java.library.path" (with a call to System.loadLibrary("xsb")). > The problem is that this will work only on Windows (given the explicit condition "isWindowsOS()"), otherwise the bin directory sent as argument is just ignored and will go directly to try to load the library according to the entries in "java.library.path". > > Instead, the code should be something like this : > > if (numberOfInstances == 1) { > File libraryFile = null; > if (XSB_BIN_DIR != null) { > File providedBinDirectory = new File(XSB_BIN_DIR); > if(isWindowsOS()) > libraryFile = new File(providedBinDirectory, "xsb.dll"); > else > libraryFile = new File(providedBinDirectory, "xsb"); > } > if (libraryFile != null && libraryFile.exists()) { > System.load(libraryFile.getAbsolutePath()); > } else { > System.loadLibrary("xsb"); > } > } > > --- > > my two cents :) > > cheers, > > Sergio > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ > Xsb-development mailing list > Xsb...@li... > https://lists.sourceforge.net/lists/listinfo/xsb-development |
From: Sergio C. <ser...@ya...> - 2013-03-28 12:02:15
|
you are welcome :) In the meanwhile, I discovered a couple of other small problems when working with TermNode instances and Hash tables. In the current version the "equals" method has been overridden in the TermModel class, but not the "hashCode()" method and this could lead to bugs rather difficult to debug when working with maps (as it was my case when I found it). This is a (tool generated) implementation for hashCode() in the TermModel class: public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Arrays.hashCode(children); result = prime * result + ((node == null) ? 0 : node.hashCode()); return result; } Note that in order to this code can work correctly, it is also needed to provide a hashCode() implementation in the VariableNode class, since instances of this class can be the node of the term model (or any of its children). A tool generated implementation for hashCode() in the VariableNode class follows: public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((number == null) ? 0 : number.hashCode()); return result; } Please let me know if in the future there is a more convenient way to submit bug patches to the project. cheers, Sergio >________________________________ > De : Miguel Calejo <mc...@de...> >À : Sergio Castro <ser...@ya...> >Cc : "xsb...@li..." <xsb...@li...> >Envoyé le : Lundi 25 mars 2013 16h50 >Objet : Re: [Xsb-development] bug in the NativeEngine class at InterProlog ? > > >You're correct, thanks for fixing that:-) >Miguel > > >On Mar 20, 2013, at 23:04 , Sergio Castro wrote: > >Hi, >> >>Not sure but I think I found a bug in the InterProlog NativeEngine class. >> >>Currently the constructor loads the XSB native library with this code: >> >>public NativeEngine(String XSB_BIN_DIR, String[] XSB_ARGS, boolean debug, boolean loadFromJar) { >> super(XSB_BIN_DIR,debug,loadFromJar); >> numberOfInstances++; >> if (numberOfInstances > 1) >> throw new IPException("Can't have more than one instance of NativeEngine"); >> // On creation of the first NativeEngine instance, the XSB.dll is loaded. >> // First, xsbBinDir and xsbBinDir\xsb.dll are tested for existence. >> // If they do exist, then the dll is loaded from this xsb.dll. If >> // either do not, then the System Path is used to locate xsb.dll. >> >> >> if (numberOfInstances == 1) { >> File xsbDLLFile = null; >> if (XSB_BIN_DIR != null) { >> File providedBinDirectory = new File(XSB_BIN_DIR); >> xsbDLLFile = new File(providedBinDirectory, "xsb.dll"); >> } >> if (isWindowsOS() && xsbDLLFile != null && xsbDLLFile.exists()) { >> System.load(xsbDLLFile.getAbsolutePath()); >> } else { >> System.loadLibrary("xsb"); >> } >> } >> ... >> >>} >> >> >>The constructor checks if the library exists in the bin directory sent as first argument. Otherwise it tries to find the library according to the entries in "java.library.path" (with a call to System.loadLibrary("xsb")). >>The problem is that this will work only on Windows (given the explicit condition "isWindowsOS()"), otherwise the bin directory sent as argument is just ignored and will go directly to try to load the library according to the entries in "java.library.path". >> >>Instead, the code should be something like this : >> >>if (numberOfInstances == 1) { >> File libraryFile = null; >> if (XSB_BIN_DIR != null) { >> File providedBinDirectory = new File(XSB_BIN_DIR); >> if(isWindowsOS()) >> libraryFile = new File(providedBinDirectory, "xsb.dll"); >> else >> libraryFile = new File(providedBinDirectory, "xsb"); >> } >> if (libraryFile != null && libraryFile.exists()) { >> System.load(libraryFile.getAbsolutePath()); >> } else { >> System.loadLibrary("xsb"); >> } >> } >> >>--- >> >>my two cents :) >> >>cheers, >> >>Sergio >> >>------------------------------------------------------------------------------ >>Everyone hates slow websites. So do we. >>Make your web apps faster with AppDynamics >>Download AppDynamics Lite for free today: >>http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ >>Xsb-development mailing list >>Xsb...@li... >>https://lists.sourceforge.net/lists/listinfo/xsb-development >> > > > |
From: Miguel C. <mc...@de...> - 2013-03-28 12:28:35
|
Interprolog bugs, patches etc. should be reported to int...@de.... It's likely that other means emerge in the not too distant future. The present list is for XSB Prolog issues. I will react to your hashCode() comments in a separate email. Thanks, Miguel Miguel Calejo Declarativa mc...@de... http://www.declarativa.pt telefone: +351-22-030-1580 fax: +351-22-030-1511 UPTEC - Parque de Ciência e Tecnologia da Universidade do Porto Rua Actor Ferreira da Silva 100 4200-298 Porto Portugal On Mar 28, 2013, at 12:02 , Sergio Castro wrote: > you are welcome :) > > In the meanwhile, I discovered a couple of other small problems when working with TermNode instances and Hash tables. In the current version the "equals" method has been overridden in the TermModel class, but not the "hashCode()" method and this could lead to bugs rather difficult to debug when working with maps (as it was my case when I found it). > > This is a (tool generated) implementation for hashCode() in the TermModel class: > > public int hashCode() { > final int prime = 31; > int result = 1; > result = prime * result + Arrays.hashCode(children); > result = prime * result + ((node == null) ? 0 : node.hashCode()); > return result; > } > > Note that in order to this code can work correctly, it is also needed to provide a hashCode() implementation in the VariableNode class, since instances of this class can be the node of the term model (or any of its children). > > A tool generated implementation for hashCode() in the VariableNode class follows: > > public int hashCode() { > final int prime = 31; > int result = 1; > result = prime * result + ((number == null) ? 0 : number.hashCode()); > return result; > } > > > Please let me know if in the future there is a more convenient way to submit bug patches to the project. > > cheers, > > Sergio > > > De : Miguel Calejo <mc...@de...> > À : Sergio Castro <ser...@ya...> > Cc : "xsb...@li..." <xsb...@li...> > Envoyé le : Lundi 25 mars 2013 16h50 > Objet : Re: [Xsb-development] bug in the NativeEngine class at InterProlog ? > > You're correct, thanks for fixing that:-) > Miguel > > On Mar 20, 2013, at 23:04 , Sergio Castro wrote: > >> Hi, >> >> Not sure but I think I found a bug in the InterProlog NativeEngine class. >> >> Currently the constructor loads the XSB native library with this code: >> >> public NativeEngine(String XSB_BIN_DIR, String[] XSB_ARGS, boolean debug, boolean loadFromJar) { >> super(XSB_BIN_DIR,debug,loadFromJar); >> numberOfInstances++; >> if (numberOfInstances > 1) >> throw new IPException("Can't have more than one instance of NativeEngine"); >> // On creation of the first NativeEngine instance, the XSB.dll is loaded. >> // First, xsbBinDir and xsbBinDir\xsb.dll are tested for existence. >> // If they do exist, then the dll is loaded from this xsb.dll. If >> // either do not, then the System Path is used to locate xsb.dll. >> >> >> if (numberOfInstances == 1) { >> File xsbDLLFile = null; >> if (XSB_BIN_DIR != null) { >> File providedBinDirectory = new File(XSB_BIN_DIR); >> xsbDLLFile = new File(providedBinDirectory, "xsb.dll"); >> } >> if (isWindowsOS() && xsbDLLFile != null && xsbDLLFile.exists()) { >> System.load(xsbDLLFile.getAbsolutePath()); >> } else { >> System.loadLibrary("xsb"); >> } >> } >> ... >> >> } >> >> >> The constructor checks if the library exists in the bin directory sent as first argument. Otherwise it tries to find the library according to the entries in "java.library.path" (with a call to System.loadLibrary("xsb")). >> The problem is that this will work only on Windows (given the explicit condition "isWindowsOS()"), otherwise the bin directory sent as argument is just ignored and will go directly to try to load the library according to the entries in "java.library.path". >> >> Instead, the code should be something like this : >> >> if (numberOfInstances == 1) { >> File libraryFile = null; >> if (XSB_BIN_DIR != null) { >> File providedBinDirectory = new File(XSB_BIN_DIR); >> if(isWindowsOS()) >> libraryFile = new File(providedBinDirectory, "xsb.dll"); >> else >> libraryFile = new File(providedBinDirectory, "xsb"); >> } >> if (libraryFile != null && libraryFile.exists()) { >> System.load(libraryFile.getAbsolutePath()); >> } else { >> System.loadLibrary("xsb"); >> } >> } >> >> --- >> >> my two cents :) >> >> cheers, >> >> Sergio >> >> ------------------------------------------------------------------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ >> Xsb-development mailing list >> Xsb...@li... >> https://lists.sourceforge.net/lists/listinfo/xsb-development > > > |
From: Miguel C. <mc...@de...> - 2013-03-18 14:49:25
|
Rather important: http://flora.sourceforge.net/ , http://silk.semwebcentral.org/ On Mar 18, 2013, at 12:45 , Sergio Castro wrote: > > I am wondering how important is for XSB the support for proper Hilog terms (i.e. compounds having as functors arbitrary terms). Are there many XSB projects currently using this feature ? which of them for example ? > I ask since as far as I understand higher order programming is equally possible using the ISO built-in call/N. > Specifically, I would like to understand if the usage of Hilog terms have further applications and if it is still regarded as a powerful feature in a Prolog like logic language, or if it is supported in XSB rather for historical reasons. > > cheers, > > Sergio > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ > Xsb-development mailing list > Xsb...@li... > https://lists.sourceforge.net/lists/listinfo/xsb-development |
From: Sergio C. <ser...@ya...> - 2013-03-18 14:09:50
|
I see, thanks Miguel!. >________________________________ > De : Miguel Calejo <mc...@de...> >À : Sergio Castro <ser...@ya...> >Cc : "xsb...@li..." <xsb...@li...> >Envoyé le : Lundi 18 mars 2013 14h49 >Objet : Re: [Xsb-development] Question about Hilog terms in XSB > > >Rather important: http://flora.sourceforge.net/ , http://silk.semwebcentral.org/ > >On Mar 18, 2013, at 12:45 , Sergio Castro wrote: > > >> >>I am wondering how important is for XSB the support for proper Hilog terms (i.e. compounds having as functors arbitrary terms). Are there many XSB projects currently using this feature ? which of them for example ? >>I ask since as far as I understand higher order programming is equally possible using the ISO built-in call/N. >>Specifically, I would like to understand if the usage of Hilog terms have further applications and if it is still regarded as a powerful feature in a Prolog like logic language, or if it is supported in XSB rather for historical reasons. >> >>cheers, >> >>Sergio >> >> >>------------------------------------------------------------------------------ >>Everyone hates slow websites. So do we. >>Make your web apps faster with AppDynamics >>Download AppDynamics Lite for free today: >>http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ >>Xsb-development mailing list >>Xsb...@li... >>https://lists.sourceforge.net/lists/listinfo/xsb-development >> > > > |
From: Michael K. <mic...@st...> - 2013-03-18 16:55:57
|
<html style="direction: ltr;"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"> <style type="text/css">body p { margin-bottom: 0cm; margin-top: 0pt; } </style> </head> <body style="direction: ltr;" bidimailui-detected-decoding-type="latin-charset" text="#000000" bgcolor="#FFFFFF"> Sergio,<br> In XSB itself, HiLog is not well-developed, so I am not sure if it is being used.<br> However, in FLORA-2, which is a higher language that is built on top of XSB, HiLog is fully developed and is very important. Likewise, SILK is heavily using HiLog. <br> <br> As to call/1, this does only a small part of what HiLog does. However, since HiLog is implemented by a transform to XSB, everything can be done in XSB itself if you are willing to write very complex terms yourself.<br> <br> --<br> <br> --- michael<br> <br> <br> <br> <div class="moz-cite-prefix">On 03/18/2013 08:45 AM, Sergio Castro wrote:<br> </div> <blockquote cite="mid:136...@we..." type="cite"> <div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"> <div><br> <span></span></div> <div>I am wondering how important is for XSB the support for proper Hilog terms (i.e. compounds having as functors arbitrary terms). Are there many XSB projects currently using this feature ? which of them for example ?</div> <div>I ask since as far as I understand <span class="yiv385932578comment-copy">higher order programming is equally possible using the ISO built-in <code>call/N.</code></span></div> <div>Specifically, I would like to understand if the usage of Hilog terms have further applications and if it is still regarded as a powerful feature in a Prolog like logic language, or if it is supported in XSB rather for historical reasons.<br> </div> <br> cheers,<br> <br> Sergio<br> <div><br> <blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;"> <div style="font-family: arial, helvetica, sans-serif; font-size: 12pt;"> </div> </blockquote> </div> </div> <br> <fieldset class="mimeAttachmentHeader"></fieldset> <br> <pre wrap="">------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: <a class="moz-txt-link-freetext" href="http://p.sf.net/sfu/appdyn_d2d_mar">http://p.sf.net/sfu/appdyn_d2d_mar</a></pre> <br> <fieldset class="mimeAttachmentHeader"></fieldset> <br> <pre wrap="">_______________________________________________ Xsb-development mailing list <a class="moz-txt-link-abbreviated" href="mailto:Xsb...@li...">Xsb...@li...</a> <a class="moz-txt-link-freetext" href="https://lists.sourceforge.net/lists/listinfo/xsb-development">https://lists.sourceforge.net/lists/listinfo/xsb-development</a> </pre> </blockquote> <br> </body> </html> |