Prolog

2011-07-14 29 views
14

ile büyük programlama Prolog kodumu modüler halde tutmaya çalışıyorum ve bunun nasıl yapılacağı konusunda tavsiyede bulunup bulunmadığını merak ediyorum. Ben bu basit consult s ile yaptığım şekilde, ama benim dosya sayısı artar ve çatışmalara isim başa çıkmak gibi hantal oluyor. Bir kaynak dosyanın üst kısmında bulunan "tipik" bir içe aktarmaya benzer herhangi bir yapı var mıdır? Örneğin, bir kaynak dosyanın en üstünde " " Program özelse, gprolog kullanıyorum. Herhangi bir yardım için şimdiden teşekkür ederiz.Prolog

cevap

6

GNU Prolog 1.4.0 kararlı sürümü için tam destek sağlar cari Logtalk geliştirme salınımını, alın. Bir Subversion checkout veya Git clone yaparak alabilirsiniz (ayrıntılar için bkz. http://logtalk.org/download.html). Ya da sadece beni özel olarak postala ve senin için bir yükleyici kuracağım. Logtalk, geniş programlama için sıfırdan tasarlanmıştır. Taşınabilir uygulamalar yazmak için kullanabilirsiniz (Logtalk, dokuz farklı Prolog derleyicide çalışır). Hatta bir modül sistemi içermeyen GNU Prolog gibi Prolog derleyicilerinde Prolog modül kodunu çalıştırmak için de kullanabilirsiniz. Logtalk, yüzlerce örneğe, taşınabilir kütüphanelere ve eksiksiz belgelere sahiptir. Prolog'dan Logtalk'a gitmek oldukça kolaydır. Her gün taşınan taşınabilir kod atımları yazıyor ;-)

10

GNU-Prolog'un gerçek bir modül sistemi yoktur, bu nedenle yaklaşımınız şu anda alabileceğiniz en iyisidir. Belki de GNU-Prolog ileride bir modül sistemi ekleyebilir, ancak bunun üzerine bir iş bahse girmezdim.

En sık kullanılan modül sistemi, aynı mod adı ve ariteyle farklı modüller halinde tanımlamaya izin verir. Böylelikle, isimlerin çarpışmaları önlenir. Atomlar ve jeneratörler modül sınırları üzerinde aynı kalır. SICStus, YAP, SWI, Ciao, IF ve ISO standardı gibi sistemler böyle bir sisteme sahiptir.

XSB tarafından başka bir modül sistemi sunulmaktadır - functor tabanlı olarak adlandırılır.

4

Doğru olanın yanlış olduğu söyleniyor. Bununla birlikte, birkaç Prolog'un (GNU Prolog dahil) üzerine bir modül sistemi ve bir OO sistemi uygulayan Logtalk'ı düşünebilirsiniz.

http://logtalk.org/faq.html#general-3

http://logtalk.org/

+1

Belirtilen tahmini tabanlı modül sistemleri, açık kaynak veya ticari olmaları ile çok benzerler. Birinden diğerine bağlantı nispeten basit. Yani, birkaç olası sağlayıcı var. Logtalk sistemi oldukça farklı ve tek bir kaynak var. – false

+3

Evet, Logtalk farklı. Ancak, farklılıklara rağmen, Logtalk, Prolog modüllerini işlevselliklerinin çoğunda kullanır ve Prolog modüllerini nesne olarak derleyebilir. Örneğin, geçerli SWI-Prolog temel kütüphanesinin çoğu, dosya adı uzantısının sadece .pl'den .lgt'ye değiştirilmesiyle derlenebilir ve nesne olarak kullanılabilir. –