Okul için daha büyük bir görevle ilgili sorun giderme yaparken, tek bir öğe gibi tek bir öğe listesi (bir öğe ile bir yığın) işlem yaptığımı yaptığım bir hata buldum.Prolog: tek öğe vs tek bir öğe listesi
48 ?- 1 is [1].
true.
49 ?- -1 is [-1].
ERROR: is/2: Type error: `character' expected, found `-1'
50 ?- 0.66 is [0.66].
ERROR: is/2: Type error: `character' expected, found `0.66'
Benzer davranış = kullanılarak yapılmaktadır: =/2 yerine/2'dir ben fark ettim garipliği ancak başka testlerde, sorunumu çözdü. Dolayısıyla, herhangi bir sebepten dolayı, tek bir öğe listesi tek bir öğe ile aynı olarak kabul edilir, ancak yalnızca negatif olmayan tamsayılar içindir.
Merak, her şeyden çok ... kimse bunun nedenini biliyor mu?
Teşekkürler! SWI-Prolog (ve muhtemelen başka durumlarda)
Teşekkürler! Bu cevap "97" [a] olarak görünüyor. doğru. Ancak, belki ben bir aptalım, ama bu el kitabında ne anlatıldığını tam olarak anlayamıyorum. Listelenen (min, max, abs, vb) yüklemler benim için var görünmüyor ve neden tüm argümanlar önünde + işaretler var anlamıyorum. Ve bu Q ile ilgili yüklemenin neden iki argümanı olan bir nokta olduğunu anlamıyorum, böyle bir şey kullanmıyorum. – The111
Bu sayfa SWI-Prolog hakkında; belki de uygulamanız min, max, vs. desteklemiyor mu? Bazı argümanlar, + + ile önceliğe sahiptir, çünkü bu, modu gösterir, yani, + ', bağlı (ve değişken değil) anlamına gelir. Son olarak, sözdizimi '[a, b]' '/ 2' listesi yapıcı yüklemi için kısaydı (yani aslında'. (A,. (B, [])) '). Sizin durumunuzda, [1] 'gibi tek tamsayı bir liste' (1, []) 'için kısaydı. – sharky
Tamam, büyük açıklamalar ... Sanırım şimdi anladım. Tekrar teşekkürler. – The111