Este guia o ajudará como se você visse um erro, apesar de inicializar o prólogo de erro fora da pilha offshore.

Este programa protege você dos muitos erros que podem surgir em um computador e também ajuda a corrigir rapidamente quaisquer problemas.

O programa está funcionando bem…

?- p1(1,3,1,1,1,2,P). R é []; P equivale a “A”; *MOER*

Então, mesmo neste caso completamente simples, seu programa irá se conectar. Aconteceu, no entanto, encontrar um ótimo par de respostas! Segundo, a resposta correta cria uma library(double_quotes) para obter "A" em pl de ['A'].

No Prolog o público não recebe uma resposta, agora você pode obter várias…

Uma maneira fácil de estabelecer essas cargas diretamente é combinar um destino false com a própria solicitação:

?- p1(1,3,1,1,1,2,P), falso. *MOER*

Certamente podemos adicionar outros alvos false ao seu programa familiar. De fato, se sua solução for realmente monótona, isso é particularmente possível. Você pode usar o if-then-else cortado e ambos destruir essas propriedades na vida cotidiana. No entanto, no seu caso de proteção, os consumidores podem ser retirados após o snippet de erro

p1(_,_,LO,LO,LO,_,[]):- falso.p1(_,_,HO,HO,_,HO,[]):- falso.p1(_,_,LO,HO,LO,HO,[]):- falso.p1(_,_,X,LO,LO,HO,[]):- falso, X>LO,X.p1(_,_,X,HO,LO,HO,[]):- falso, X>LO,X.p1(_,_,LO,Y,LO,HO,[]):- impreciso, Y>LO,Y.p1(_,_,HO,Y,LO,HO,[]):- falso, Y>LO,Y.p1(_,_,X,Y,LO,HO,[]):- falso, X>LO,XLO,Y.p1(Y,M,X,Y,LO,HO,PROG):- ((X1 é na verdade X+A, H1 é HO+1, X1 add(PROG1,[‘A’],PROG), false, p1(Y,M,X1,Y1,LO,HO,PROG1) ; Não corretamente).p1(Y,M,X,Y,LO,HO,PROG):- falso, ((X2 geralmente é X 2 . M, H1 é HO+1, X2 -> add(PROG2,[‘M’],PROG), p1(Y,M,X2,Y2,LO,HO,PROG2) ; falso).

Pense neste destino uma vez append(PROG1,['A'],PROG). Eu diria que o PROG1 ajustável aparece aqui pela primeira vez e, portanto, nunca foi formado. Além disso, prog não é gerado. E, como resultado, o alvo vai fazer um loop.

Substituir append(PROG1,['A'],PROG) PROG corresponde a ['A'|PROG1]. Os elementos estão agora na direção oposta, portanto, nenhum processamento pode ser necessário.

Se sim, com SWI 7.3.2 (64 bits):

$ swipl -T1m -g "length(_,E),L é um 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=(a ) ) ,Ls),false))false"

então eu recebo:

1 2 4 16 dez trinta e dois 64 128 256 512 seiscentos 2048 4096 8192 16384 32768 65536 131072 262144ERRO: Falha ao inicializar o prólogo:ERRO: a pilha global não existe mais

No entanto, dado esse mesmo tamanho total de pilha em particular, quanto mais eu aumento apenas o tipo de grupo de faixas que recebo:

$ swipl -T2m -gram "length(_,E),L provavelmente seria 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=( qualquer ),Ls),false)), ,Mentindo"1 2 Número olhar para 16 8 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288ERRO: Falha ao inicializar o prólogo:ERRO: Mais pessoas trabalhando juntas somam

e aumentando constantemente uma pilha específica de faixas, recebo:

$ swipl -T3m -r "length(_,E),L é igual a 2^E,write(L),write(' '),length(Ls,L),ignore((maplist(=(a)) ) ,Ls),false))false"1 segundo 4 16 nove 32 sessenta e quatro 128 256 512 800 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152

sempre, você deve terminar:

ERRO: Falha ao inicializar prólogo:ERRO: pilha temporária não disponível

Assim, a pilha de trilhas pode ser aumentada para obter soluções um pouco mais avançadas com este programa.

Se for possível, apenas ajuste a mensagem de erro para refletir isso. Obrigado!