$ENTRY Go { = ; }; Теперь желательно рассмотреть все случаи, которые могут встретиться в ходе поиска.
Задача считается решенной, когда состояние в последней связи является целевым. Имеем предложение:
e1 (s.M'='R()('MMMCCC')) = ; В этом случае остается только подходящим образом напечатать решение, что является обязанностью функции Path .
Это предложение будет испытываться первым. Пока оно не срабатывает, продолжается поиск и удлинение нашего пути за счет добавления новой связи, возникающей в результате перемещения 1 :
e1 (sM'='eS) = )>; Теперь, если этот путь записать, видно, что последним состоянием в пути может оказаться Imposs . Поэтому, перед удлинением пути следует проверять, является ли последнее состояние допустимым или состоянием Imposs , и в последнем случае предпринять соответствующее действие. Как всегда в РЕФАЛе, предложение (или предложения) для специального случая, когда eS является Imposs, должно предшествовать предложению (ям) для общего случая.
Если результатом последнего перемещения является Imposs , испытывается следующее перемещение, т.е., последняя связь замещается следующим образом: