2017-06-21 8 views
1
vecLine2BitLineAux([C | Cs],[P | Ps], N, LastP, LastC, BitLine) :- 
    /* print(P), print(' '), print(C), print(' '), print(N), 
     print(' '), print(LastP), print(' '), print(LastC), 
     print(' '), print(BitLine), print('\n'), */ 
    vecLine2BitLineAux(Cs,Ps, N, P, C, Res), 
    SpCnt is P-(LastP+LastC), 
    /* print(SpCnt),print('\n'), */ 
    fill_char(SpCnt, ' ', Spaces), 
    fill_char(LastC, '*', Stars), 
    append(Stars, Spaces, Tmp), 
    append(Tmp, Res, BitLine). 

vecLine2BitLine(CList, [P | Ps], N, BitLine) :- 
    P1 is P-1, 
    vecLine2BitLineAux(Clist, [P | Ps], N, P1, 0, BitLine). 

主述語(P-1)である2つの追加パラメータと補助述部を呼び出して、0、いくつかは、なぜそれがエラーを与えるべきである:プロローグ - メイン述語における補助述語

Exception: (11) _L191 is 9- (5+_G559) ? 

しかし、私はちょうど次の例で補助述語を実行する場合、それは素晴らしい作品:

vecLine2BitLineAux([1,2,1],[2,5,9],12, 1,0,BitLine). 

なぜ、どのように私はそれを修正することができますいずれもが知っていますか?

+1

'/ 2'は式評価ツールなので、右辺式の* all *変数は数値にバインドする必要があります。 – lurker

答えて

2

エラーメッセージは、基本的には、この式であることを告げるがされています

SpCnt is P-(LastP+LastC), 

変数LastCが結合することなく到着。

あなたは私たちが本当にデバッグのための十分なコードが含まれていませんでしたが、私はあなたのコードをロードしたとき、私はこのメッセージを得たことに気づく:

Warning: /Users/dlyons/Desktop/test.pl:11: 
Singleton variables: [CList,Clist] 

プロローグは非常に大文字と小文字が区別され、そしてあなたがシングルトンを考える必要があります可変警告を重大なエラーとして扱う!そうしないと、コードが壊れてしまいます。 vecLine2BitLine/4の本文に入力ミス(CListClist)を修正すると、問題が解消される可能性が高いと思います。