我想在Picat中快速創建一個結構。但是在創建結構時應該評估結構的組成部分。到目前爲止,我試過了,這給了我當組件已經常數的結構:評估構造函數是否存在於Picat中?還是更像Prolog?
Picat 2.0b5, (C) picat-lang.org, 2013-2016.
Picat> X = $point(2,3).
X = point(2,3)
yes
但下面不工作,應進行評估,即組件。我期待,結果X =點(3,12),但它並沒有給這樣的結果:
Picat> X = $point(1+2,3*4).
X = point(1 + 2,3 * 4)
yes
什麼是做到這一點的最簡單的辦法?看起來,Picat($)/ 1運算符就像lisp引號運算符,它可以防止Picat評估。 Prolog統一是什麼。下面是統一的Prolog的一些例子在Picat:
Picat> $point(X,Y) = $point(1+2,3*4).
X = 1 + 2
Y = 3 * 4
yes
Picat> $point(X+Y,Z) = $point(1+2,3*4).
X = 1
Y = 2
Z = 3 * 4
yes
Picat> $X = $point(1+2,3*4).
X = point(1 + 2,3 * 4)
yes
如Prolog的表述如1 + 2和3 * 4不被評估內部($)/ 1。也許不可能在Picat中評估構造函數,目前它們在標準Prolog中也沒有。