Bir "++ ++" operatörünü "a ++> b" yazarak [a, b] 'nin bir listesini oluşturacak şekilde tanımlamak istiyorum.Liste yapmak için prologda bir operatör nasıl tanımlanır?
Aşağıdaki kodu yazdım, ancak işi yapmıyor gibi görünüyor. operatörler açısından sadece eş yani
++>(X,Y) :-
[X,Y].
:- op(500,xfy,++>).
gerçekten iki konunun, bir infix gösterimde olarak "++>" operatörünü tanımlayan, burada vardır ve "a ++> b" ifadesinin, [a, b] terimiyle "değerlendirileceği" düzenlenmesi. İlk bölüm, ** op/3 ** 'den bahsettiğiniz gibi oldukça standart Prolog'dur. Yeni operatörü ilgilendiren şartları "değerlendirmek" için makinelerin kullanılması zorlaşır. Aritmetik işlevler için SWI-Prolog'un, **/2 ** 'nin kullanıcı tanımlı işlevlerle çalışmasına izin veren bir yönergesi vardır, ancak sizinki bir aritmetik işlev değildir. Yeni bir yüklemi nasıl tanımlayacağınızı gösterebilirim ** iz/2 ** "değerlendir" ++. – hardmath
SWI-Prolog'un 'arithmetic_function/1' yönergesini kazmak için vesile vesilesiyle karşılaştım ve [göz ardı edilmiş, belki de düştü] (http://www.swi-prolog.org/pldoc/man?predicate= arithmetic_function/1). – hardmath