हाँ, तुम ठीक कह रहे, डॉट यह सूची है विपक्ष इन्फ़िक्स ऑपरेटर । यह वास्तव में आईएसओ प्रोलॉग मानक द्वारा आवश्यक है, लेकिन आमतौर पर छुपाया जाता है। मैंने पाया (और प्रयुक्त) कुछ समय पहले वाक्यविन्यास:
:- module(eog, []).
:- op(103, xfy, (.)).
% where $ARGS appears as argument, replace the call ($ARGS) with a VAR
% the calle goes before caller, binding the VAR (added as last ARG)
funcs(X, (V, Y)) :-
nonvar(X),
X =.. W.As,
% identify meta arguments
( predicate_property(X, meta_predicate M)
% explicitly exclude to handle test(dcg)
% I'd like to handle this case in general way...
, M \= phrase(2, ?, ?)
-> M =.. W.Ms
; true
),
seek_call(As, Ms, Bs, V),
Y =.. W.Bs.
% look for first $ usage
seek_call([], [], _Bs, _V) :-
!, fail.
seek_call(A.As, M.Ms, A.Bs, V) :-
M @>= 0, M @=< 9, % skip meta arguments
!, seek_call(As, Ms, Bs, V).
seek_call(A.As, _, B.As, V) :-
nonvar(A),
A = $(F),
F =.. Fp.FAs,
( current_arithmetic_function(F) % inline arith
-> V = (PH is F)
; append(FAs, [PH], FBs),
V =.. Fp.FBs
),
!, B = PH.
seek_call(A.As, _.Ms, B.As, V) :-
nonvar(A),
A =.. F.FAs,
seek_call(FAs, Ms, FBs, V),
!, B =.. F.FBs.
seek_call(A.As, _.Ms, A.Bs, V) :-
!, seek_call(As, Ms, Bs, V).
:- multifile user:goal_expansion/2.
user:goal_expansion(X, Y) :-
(X = (_ , _) ; X = (_ ; _) ; X = (_ -> _))
-> !, fail % leave control flow unchanged (useless after the meta... handling?)
; funcs(X, Y).
/* end eog.pl */
मुझे इसके खिलाफ सलाह दी गई थी। प्रभावी रूप से, [ए | बी] वाक्यविन्यास यह एक विकास है। ऑपरेटर, पठनीयता के लिए पेश किया।
ओटी: वह कोड क्या है?
उपरोक्त कोड प्रोजेन के साथ प्रोजेन को मीठा करने का मेरा प्रयास है। अर्थात्, अनुरोध पर परिचय $
के माध्यम से, गणित के लिए आवश्यक (उदाहरण के लिए) अस्थायी चर भाव
fact(N, F) :-
N > 1 -> F is N * $fact($(N - 1)) ; F is 1.
प्रत्येक $ एक चर परिचय। विस्तार के बाद, हम एक और अधिक परंपरागत तथ्य/2
?- listing(fact).
plunit_eog:fact(A, C) :-
( A>1
-> B is A+ -1,
fact(B, D),
C is A*D
; C is 1
).
कहाँ हम कई भाव है, जो उपयोगी हो सकता है ...
कागज में कौन सा प्रोलॉग उपयोग किया जाता है? –
मैंने उस के लिए पेपर स्कैन किया लेकिन दुर्भाग्य से वहां इसका संदर्भ नहीं मिला! –
यह कुछ वाक्य रचनात्मक चीनी हो सकता है –