波斯语言处理序言

时间:2015-06-29 07:27:11

标签: prolog expert-system

这是我的prolog代码,它给了我以下错误:

  

错误:超出全局堆栈

hasA(S,A):- name(S,L1),
            compar(L1,A).
compar([H1,H2|T1],T1):- H1 == 1575, H2 == 1740.

neda(H,A):- hasA(H,Z1),
            append(A,[1575,1740],A),
            state(Z1,Z2),
            append(A,Z2,A).
state([H|T],T):- H == 32.
state(A,A).

有什么问题?你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

假设您在neda(H,A)为自由变量的情况下致电A,您最终会调用append(A,[1575,1740],A)A为自由变量。但是,传统上,append实现为

append([],Ys,Ys).
append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs).

append(A,[1575,1740],A)append([],Ys,Ys)的统一失败,因为一方面A需要[],另一方面[1575,1740]需要append(A,[1575,1740],A)。因此,Prolog尝试将append([X|Xs],Ys,[X|Zs]){A/[X|Xs], Ys/[1575,1740], Xs/Zs}统一,并以append(Xs,[1575,1740],Xs)成功,这导致调用[1575,1740]并重复该过程,即Prolog进入无限递归并最终运行没法了。

如果我猜测您的意图正确,首先希望将A追加到Z2然后附加A1。这意味着您需要引入两个新变量,例如A2A,以便在每个追加步骤后记录neda(H,A):- hasA(H,Z1), append(A,[1575,1740],A1), state(Z1,Z2), append(A1,Z2,A2). 的状态:

A

但请注意,<html> <head> </head> <body style="-webkit-text-size-adjust: 100%;"> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td valign="top" style="padding-left: 0px; padding-top: 0px; padding-bottom: 0px; padding-right: 0px;" colspan="2"> <span style="text-align: left; color: #52524D; font-family: Helvetica, Arial, sans-serif; font-size: 13pt; font-weight: bold"><b>Mathenge Anthony</b> |<i><small> Intern</small></i></span> </td> </tr> <tr> <td valign="top" style="padding-left: 0px; padding-top: 0px; padding-bottom: 2px; padding-right: 0px;" colspan="2"> <a href="http://www.systechafrica.com"><img src="http://www.qualitexsolutions.com/img/works/systech.png" nosend="1" border="0" width="200" height="120" alt='Systech Africa' title='Systech Africa' /></a> </td> </tr> <tr> <td valign="top" style="padding-left: 0px; padding-top: 0px; padding-bottom: 0px; padding-right: 0px;" colspan="2"><span style="text-align: left; color: #000000; font-family: 'Arial', sans-serif; font-size: 9pt; font-style: normal; font-weight: normal;"> 1st Floor Mayfair Business Centre, Parklands Road, Westlands &nbsp;<font size="1" color="#B9B9B9"><br></font>&nbsp;P.O. Box 41964 - 00100&nbsp;<font size="1" color="#B9B9B9">|</font>&nbsp;Nairobi, Kenya.<br></span></td> </tr> <tr> <td valign="bottom" style="padding-left: 0px; padding-top: 6px; padding-bottom: 0px; padding-right: 0px;"><span style="text-align: left; color: #000000; font-family: 'Arial', sans-serif; font-size: 7pt; font-style: normal; font-weight: normal;"><font color="#828282"><b>Phone:</b></font>&nbsp; </span></td> <td align="left" width="100%" valign="top" style="padding-left: 6px; padding-top: 6px; padding-bottom: 0px; padding-right: 0px;"><span style="text-align: left; color: #000000; font-family: 'Arial', sans-serif; font-size: 9pt; font-style: normal; font-weight: normal;"> (+254) 020 2115993/3742207 </span></td> </tr> <tr> <td valign="bottom" style="padding-left: 0px; padding-top: 0px; padding-bottom: 0px; padding-right: 0px;"><span style="text-align: left; color: #000000; font-family: 'Arial', sans-serif; font-size: 7pt; font-style: normal; font-weight: normal;"><font color="#828282"><b>Mobile:</b></font>&nbsp; </span></td> <td align="left" width="100%" valign="top" style="padding-left: 6px; padding-top: 0px; padding-bottom: 0px; padding-right: 0px;"><span style="text-align: left; color: #000000; font-family: 'Arial', sans-serif; font-size: 9pt; font-style: normal; font-weight: normal;"> 0723-847842, 0786-384784 </span></td> </tr> <tr> <td valign="bottom" style="padding-left: 0px; padding-top: 0px; padding-bottom: 0px; padding-right: 0px;"><span style="text-align: left; color: #000000; font-family: 'Arial', sans-serif; font-size: 7pt; font-style: normal; font-weight: normal;"><font color="#828282"><b>Fax:</b></font>&nbsp; </span></td> <td align="left" width="100%" valign="top" style="padding-left: 6px; padding-top: 0px; padding-bottom: 0px; padding-right: 0px;"><span style="text-align: left; color: #000000; font-family: 'Arial', sans-serif; font-size: 9pt; font-style: normal; font-weight: normal;"> (+254) 020 224 0363 </span></td> </tr> <tr> <td valign="top" style="padding-left: 0px; padding-top: 6px; padding-bottom: 0px; padding-right: 0px;" colspan="2"><span style="text-align: left; margin-top: 0px; color: #00ADEF; font-size: 8pt; font-weight: bold; font-family: 'Calibri', sans-serif;"><a style="text-decoration: none; color: #00ADEF" href="http://www.systechafrica.com/"><font color="#00ADEF">website</font></a>&nbsp;<font size="1" color="#00ADEF">&nbsp;<font size="1" color="#00ADEF">|</font>&nbsp;<a style="text-decoration: none; color: #00ADEF" href="https://www.google.com/maps/place/Systech+Limited/@-1.262282,36.808949,15z/data=!4m2!3m1!1s0x0:0xf5bbb42d28fa1a88"><font color="#00ADEF">map</font></a>&nbsp;<font size="1" color="#00ADEF">|</font>&nbsp;<a style="text-decoration: none; color: #00ADEF" href="mailto:info@systechafrica.com"><font color="#00ADEF">email</font></a></span></td> </tr> <tr> <td valign="top" style="padding-left: 0px; padding-top: 10px; padding-bottom: 0px; padding-right: 0px;" colspan="2"> <img src="http://s24.postimg.org/y4lzmrxut/Fundmaster.png" nosend="1" border="0" width="250" height="70" alt="" />&nbsp;&nbsp;&nbsp; </td> </tr> <tr> <td valign="top" style="padding-left: 0px; padding-top: 7px; padding-bottom: 0px; padding-right: 0px;" width="100%" colspan="2"> <a href="https://twitter.com/SystechLtdKE"><img src="https://simplesharebuttons.com/images/somacro/twitter.png" nosend="1" border="0" width="22" height="20" alt="Twitter" /></a> <a href="https://www.facebook.com/SystechLimited"> <img src="https://simplesharebuttons.com/images/somacro/facebook.png" nosend="1" border="0" width="22" height="20" alt="Facebook" /></a> <a href="https://www.linkedin.com/company/systech-limited"><img src="https://simplesharebuttons.com/images/somacro/linkedin.png" nosend="1" border="0" width="22" height="20" alt="LinkedIn" /></a> <a href="https://plus.google.com/115976292984421142673/about"><img src="https://simplesharebuttons.com/images/somacro/google.png" nosend="1" border="0" width="22" height="20" alt="google+" /></a> </td> </tr> </tr> </tbody> </table> </body> <style> a {color: #00ADEF;} </style> </html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 是回溯的自由变量,此代码将生成长度增加的列表;这就是你想要的吗?