El corte , en Prolog , es un gol , escrito como!, Que siempre tiene éxito, pero no puede retroceder. Se utiliza mejor para evitar retrocesos no deseados , incluido el hallazgo de soluciones adicionales por parte de Prolog y para evitar cálculos innecesarios.
El corte debe usarse con moderación. Si bien se pueden insertar cortes en códigos que contienen errores, si una prueba es innecesaria porque un corte ha garantizado que es cierto, es una buena práctica decirlo en un comentario en el lugar apropiado. [1]
Algunos programadores llaman al corte una facilidad de control controvertida [2] porque se agregó solo por razones de eficiencia y no es una cláusula de Horn .
Tipos
Corte verde
El uso de un corte que solo mejora la eficiencia se denomina corte verde. Los cortes verdes se utilizan para hacer que los programas sean más eficientes sin cambiar la salida del programa. Por ejemplo:
apostar ( X ) : - tengo dinero ( X ),!. apostar ( X ) : - gotcredit ( X ), \ + gotmoney ( X ).
Esto se llama operador de corte verde . La ! le dice al intérprete que deje de buscar alternativas; sin embargo, si falla, verificará la segunda regla. Aunque verificar la segunda regla puede parecer redundante, ya que la apariencia de Prolog depende de fallar antes, de lo contrario, la segunda regla no se evaluaría en primer lugar. Agregar garantías de que la segunda regla siempre funcionará, incluso si la primera regla se elimina por accidente o se cambia, o se mueve después de la segunda.gotmoney(X)
gotmoney(X)
gotmoney(X)
\+ gotmoney(X)
Corte rojo
Un corte que no es un corte verde se denomina corte rojo , por ejemplo:
apostar ( X ) : - tengo dinero ( X ),!. apostar ( X ) : - obtener crédito ( X ).
Se requiere la ubicación adecuada del operador de corte y el orden de las reglas para determinar su significado lógico. Si por alguna razón se elimina la primera regla (por ejemplo, por un accidente de cortar y pegar ) o se mueve después de la segunda, la segunda regla se romperá, es decir, no garantizará la regla \+ gotmoney(X)
.
Referencias
- ↑ Dyckhoff, Roy (20 de mayo de 1994). Extensiones de Programación Lógica: 4º Taller Internacional, ELP '93, St Andrews, Reino Unido, 29 de marzo - 1 de abril de 1993. Actas . Springer Science & Business Media. ISBN 978-3-540-58025-6.
- ^ Fundamentos de la programación lógica , Springer (2012).