2010-10-18 3 views
1

Есть ли что-нибудь в Prolog, которое работает как цикл for, и если это условие?Пролог петли и условные утверждения?

+7

Если вы думаете о циклах с прологом, вы, вероятно, думаете неправильно. Если у вас есть конкретная проблема, спросите об этом. – JoshD

+1

Согласен. Использование циклов и условностей в Prolog почти всегда увеличивает сложность и снижает полезность Prolog. Вам нужно подумать о рекурсии и объединении. В противном случае вы также можете использовать C# или Java. Или это вопрос «академической» природы? – Enigmativity

+0

ya это связано со школой ... так. –

ответ

5

Если вы ищете такие виды заявлений, то вы не мыслящие в Прологе :)

Шутит, кстати есть не простой перевод или для и если/иначе, но вы можете думать о как они должны быть в прологе:

  • если/другое заявление может быть получено только имея два правила, которые соответствуют по различным условиям
  • цикл можно сделать с помощью двух рекурсивных правил, один из них является базовым, и он не зависит от самого себя, а другой делает то, что вы намерены делать внутри цикла, и следует за собой.
+1

-1: в Prolog есть конструкция if-then-else, и это весьма полезно в сложных правилах. –

+3

Да, есть, но вы должны избегать его использования, и мы не говорим о сложных правилах. Если вы научите кого-то плохую привычку перед хорошим, вы никогда не будете выздоравливать :) – Jack

+2

ИМХО, этого не следует избегать, его следует учить. Если мы не научим этого, люди начнут писать программы с красными сокращениями в них. –

9

если/then/else можно получить с помощью (->)/2 и (;)/2:

( If -> 
    Then 
; Else 
) 

Иногда это полезно. В общем, хотя (когда условие содержит переменные), это сделает ваши программы необоснованными и неполными. Всякий раз, когда можно описать условия с сопоставлением с образцом, вместо этого следует использовать сопоставление шаблонов. Затем вы можете не только проверять, но и генерировать решения.

Смежные вопросы