Zoeken…


Naming

Bij het programmeren in Prolog moeten we twee soorten namen kiezen:

  • namen van predikaten
  • namen van variabelen .

Een goede predicaatnaam maakt duidelijk wat elk argument betekent. Volgens afspraak worden onderstrepingstekens in namen gebruikt om de beschrijving van verschillende argumenten te scheiden. Dit komt omdat underscores_keep_even_longer_names_readable , terwijl mixingTheCasesDoesNotDoThisToTheSameExtent .

Voorbeelden van goede predicatennamen zijn:

  • parent_child/2
  • person_likes/2
  • route_to/2

Merk op dat beschrijvende namen worden gebruikt. Gebiedende wijs worden vermeden. Het is raadzaam om beschrijvende namen te gebruiken, omdat Prolog-predicaten meestal in meerdere richtingen kunnen worden gebruikt en de naam ook van toepassing moet zijn op alle of geen van de argumenten.

Gemengd hoofdlettergebruik komt vaker voor bij het selecteren van namen van variabelen . Bijvoorbeeld: BestSolutions , MinElement , GreatestDivisor . Een algemene conventie voor het benoemen van variabelen die opeenvolgende toestanden aanduiden , is het gebruik van S0 , S1 , S2 , ..., S , waarbij S staat voor de uiteindelijke status.

deuk

Er zijn slechts een paar taalconstructies in Prolog, en verschillende manieren om ze te laten inspringen zijn gebruikelijk.

Het maakt niet uit welke stijl wordt gekozen, een principe dat altijd moet worden aangehouden, is om nooit (;)/2 aan het einde van een regel te plaatsen. Dit komt omdat ; en , lijken erg op elkaar, en , vaak optreedt aan het einde van een regel. Daarom moeten clausules die een disjunctie gebruiken bijvoorbeeld worden geschreven als:

(  Goal1
;  Goal2 
)

Volgorde van argumenten

In het ideale geval kunnen Prolog-predikaten in alle richtingen worden gebruikt. Voor veel zuivere predikaten is dit ook daadwerkelijk het geval. Sommige predikaten werken echter alleen in bepaalde modi , wat instantiatiepatronen van hun argumenten betekent.

Volgens afspraak is de meest voorkomende volgorde van argumenten voor dergelijke predicaten:

  • invoerargumenten worden eerst geplaatst. Deze argumenten moeten worden gestart voordat het predicaat wordt aangeroepen.
  • paren van argumenten die bij elkaar horen, worden naast elkaar geplaatst, zoals p(..., State0, State, ...)
  • bedoelde uitvoerargumenten worden als laatste geplaatst. Deze predikaten worden geïnstantieerd door het predicaat.


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow