Prolog komutlarının bir listesini nerede bulabilirim?

Prolog'da yeniyim ve bazı değerlerin bir tarih olup olmadığını kontrol etmek için bir program yapmaya çalışıyorum, fakat dil ile ne yapabilirim bilmiyorum. Komutları bilmiyorum.

Örneğin, bir dizenin uzunluğunu almak istiyorum, ancak bunun mümkün olup olmadığını bilmiyorum.

Birisi bana Prolog komutlarının bir listesini gösterebilir mi? Java için tuProlog kullanıyorum.

Bu arada, yapmak istediğim program şudur: iki veya üç parametre almak ve bir tarih türü olup olmadığını kontrol etmek (örneğin: 10/2000, 2011/09, 11/03/1191, vb.).

0

3 cevap

TuProlog'un bu konumdaki kullanım kılavuzuna göz atabilirsiniz. Bölüm 4.4, yerleşik yüklemleri ele almaktadır.

This link might also be of help. Working with strings in Prolog

And for parsing, given that one of the libraries in tuProlog is for DCGs: Prolog DCG presentation

Ayrıca, başkalarının sorularını ve cevaplarını görmek için Prolog için Stackoverflow'u ve dcg'yi de arayabilirsiniz.

2
katma

dokümantasyon .se/isl/sicstuswww/site/index.html "rel =" nofollow "> SICStus Prolog standart kütüphanesini açıklar. Bir Prolog uygulaması için hangi bölümlerin standart olmadığına veya standart olmadığına emin değilim, ancak size yardımcı olabilir.

1
katma

tuProlog'un kullanım kılavuzunu bulmak kolay: Belgeler . 5. Bölüm, elinizde bulunan Prolog komutlarını içerir.

Sorunuzda, tarihi bir dize olarak aldığınızı ve tarih dizesinin hangi biçimde geldiğinden emin olmadığınızı anlarım.

Dizgiyi bir terime dönüştürmek için text_term/2 'ye bakardım (% 100 emin değilim, kullandığım Prolog sistemi bunun için farklı bir adlandırılmış yüklemeye sahiptir). Ardından, bir ya da iki eğik çizgi içerip içermediğini (ya da başka bir formatta olduğunu ya da herhangi bir tarihte olmadığını), istenen yapının bir terimiyle Terim birleştirerek test edebilirsiniz:

Term = D/M/Y

ve bu geçerli bir tarih ise test:

text_term(Text,Term),
( Term = D/M/Y, valid_date(D,M,Y) ->
  true
; Term = M/D/Y, valid_date(D,M,Y) ->
  true
; ...

The -> is "if-then", the ; is "else". You'll need to write a predicate that test for valid dates, which I called valid_date/3 above.

1
katma