Re: Ideas on how to transform a prolog program into a clp program
Edison Mera <[email protected]> Thu, 10 Apr 2014 17:12:28 +0200
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <CAKkUgY51UHEu0OMCQi3q=JpyBLO7V0G+2kke4msUx5GvDSJMXA@mail.gmail.com> |
You are welcome! Regarding PDT, I also heard that, however as far as I know, nothing has been released yet. May be is only a future project they plan to do, but 1.5 years ago, when I started in the company I work for (Process Design Center) I can't wait for too long, and decided to start my own implementation, which nowadays work reasonable well, but still needs to be improved. Regards, Edison. El 9 de abril de 2014, 17:02, Wouter Beek <[email protected]> escribió: Hi Edison, That refactor project looks interesting. Thanks! PS: I believe the PDT people are working on refactoring support for their Eclipse-based Prolog editor as well. --- Cheers!, Wouter. E-mail: [email protected] WWW: www.wouterbeek.com Tel.: 0647674624 On Wed, Apr 9, 2014 at 4:50 PM, Edison Mera <[email protected]> wrote: > In this case, you can use the refactoring tool, first install it with: > > pack_install('https://github.com/edisonm/refactor.git'). > > And then run the following commands in the swipl shell: > > replace_term(Module:_, A<B, A#<B,[]). > rshow. % if you want to see the changes > rcommit. % if you are happy with such changes > > use rreset if you don't want to apply the changes, but want to modify the > refactoring rule. > > Best Regards, > > > Edison <http://edisonm.com/> > > > > 2014-04-08 9:20 GMT+02:00 Jan Wielemaker <[email protected]>: > > > On 08-04-14 02:38, fybertas wrote: > > > I've been trying to transform a prolog program into a clp(constraint > > > logic program): therefore, I need to add finite domain constraints to > > > variables in the program; I also need to change the operators in the > > > program to their equivalence in clp (for instance, change "<" into > > > "#<"). > > > > Most likely it is not that simple. For example, clp(fd) doesn't like > > cuts too much ... If the program works, it is also not clear what you > > gain. It might turn single moded predicates into multi moded ones. If > > that is what you are after, you could be on the right track. > > > > > But I am kind of stuck as to how to implement this using prolog, here > are > > > two possible ways IMO: > > > (1) process the prolog file by term input/output, identify the terms > and > > > clauses(which is not very explicit), then perform the above two > > > transformation. > > > > That is done using term_expansion/2 (or maybe just goal_expansion/2) in > > this case. E.g., > > > > goal_expansion(A<B, A#<B). > > > > > (2) read in the file using "consult", then process the clauses in the > > > memory, use assert and retract to manipulate clauses. > > > > Yes, but the output will look ugly as you loose all variable names > > and all comments. > > > > > (3) Or maybe there are some library that can help me with this? > > > > See http://www.swi-prolog.org/pack/list?p=refactor. It seems the > > pack is not upgraded regularly. You can find the github repo by > > clicking on the author's link (Edison Mera). There you find recent > > activity. > > > > Hope this helps > > > > Cheers --- Jan > > > > > > > > Could someone shed some light on this? I have tried to find tutorials > on > > > advanced Prolog programming but couldn't find much. > > > > > > > > > > > > -- > > > View this message in context: > > > http://swi-prolog.996271.n3.nabble.com/Ideas-on-how-to-transform-a-prolog-program-into-a-clp-program-tp14746.html > > > Sent from the SWI Prolog mailing list archive at Nabble.com. > > > _______________________________________________ > > > SWI-Prolog mailing list > > > [email protected] > > > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog > > > > > _______________________________________________ > > SWI-Prolog mailing list > > [email protected] > > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog > > > -------------- next part -------------- > HTML attachment scrubbed and removed > > _______________________________________________ > SWI-Prolog mailing list > [email protected] > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog > > Edison <http://edisonm.com/> 2014-04-09 17:02 GMT+02:00 Wouter Beek <[email protected]>: > Hi Edison, > > That refactor project looks interesting. Thanks! > > PS: I believe the PDT people are working on refactoring support for their > Eclipse-based Prolog editor as well. > > --- > Cheers!, > Wouter. > > E-mail: [email protected] > WWW: www.wouterbeek.com > Tel.: 0647674624 > > > On Wed, Apr 9, 2014 at 4:50 PM, Edison Mera <[email protected]> wrote: > >> In this case, you can use the refactoring tool, first install it with: >> >> pack_install('https://github.com/edisonm/refactor.git'). >> >> And then run the following commands in the swipl shell: >> >> replace_term(Module:_, A<B, A#<B,[]). >> rshow. % if you want to see the changes >> rcommit. % if you are happy with such changes >> >> use rreset if you don't want to apply the changes, but want to modify the >> refactoring rule. >> >> Best Regards, >> >> >> Edison <http://edisonm.com/> >> >> >> >> 2014-04-08 9:20 GMT+02:00 Jan Wielemaker <[email protected]>: >> >> > On 08-04-14 02:38, fybertas wrote: >> > > I've been trying to transform a prolog program into a clp(constraint >> > > logic program): therefore, I need to add finite domain constraints to >> > > variables in the program; I also need to change the operators in the >> > > program to their equivalence in clp (for instance, change "<" into >> > > "#<"). >> > >> > Most likely it is not that simple. For example, clp(fd) doesn't like >> > cuts too much ... If the program works, it is also not clear what you >> > gain. It might turn single moded predicates into multi moded ones. If >> > that is what you are after, you could be on the right track. >> > >> > > But I am kind of stuck as to how to implement this using prolog, here >> are >> > > two possible ways IMO: >> > > (1) process the prolog file by term input/output, identify the terms >> and >> > > clauses(which is not very explicit), then perform the above two >> > > transformation. >> > >> > That is done using term_expansion/2 (or maybe just goal_expansion/2) in >> > this case. E.g., >> > >> > goal_expansion(A<B, A#<B). >> > >> > > (2) read in the file using "consult", then process the clauses in the >> > > memory, use assert and retract to manipulate clauses. >> > >> > Yes, but the output will look ugly as you loose all variable names >> > and all comments. >> > >> > > (3) Or maybe there are some library that can help me with this? >> > >> > See http://www.swi-prolog.org/pack/list?p=refactor. It seems the >> > pack is not upgraded regularly. You can find the github repo by >> > clicking on the author's link (Edison Mera). There you find recent >> > activity. >> > >> > Hope this helps >> > >> > Cheers --- Jan >> > >> > > >> > > Could someone shed some light on this? I have tried to find tutorials >> on >> > > advanced Prolog programming but couldn't find much. >> > > >> > > >> > > >> > > -- >> > > View this message in context: >> > >> http://swi-prolog.996271.n3.nabble.com/Ideas-on-how-to-transform-a-prolog-program-into-a-clp-program-tp14746.html >> > > Sent from the SWI Prolog mailing list archive at Nabble.com. >> > > _______________________________________________ >> > > SWI-Prolog mailing list >> > > [email protected] >> > > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog >> > > >> > _______________________________________________ >> > SWI-Prolog mailing list >> > [email protected] >> > https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog >> > >> -------------- next part -------------- >> HTML attachment scrubbed and removed >> >> _______________________________________________ >> SWI-Prolog mailing list >> [email protected] >> https://lists.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog >> >> > -------------- next part -------------- HTML attachment scrubbed and removed