كيفية التحقق من حالة وجود قاعدة في قاعدة بيانات بند ملف حاسوب

StackOverflow https://stackoverflow.com/questions/321974

  •  11-07-2019
  •  | 
  •  

سؤال

وأنا أعمل في مهمة الكلية حيث يجب أن تحقق في حالة وجود شرط معين (كحقيقة أو كقاعدة عامة) في قاعدة البيانات بند الحالية.

والفكرة هي استخدام قاعدة التي يرأسها تحقق (+ الاسم، + الحجج). وينبغي أن يكون هذا الحكم صحيحا إذا في قاعدة البيانات موجودة قاعدة أخرى التي يرأسها اسم (الحجج)

وأي مساعدة سيكون موضع تقدير كبير ...

هل كانت مفيدة؟

المحلول

وعن طريق call/1 ليست فكرة جيدة لcall/1 يدعو فعلا إلى الهدف، ولكن كنت ترغب فقط في معرفة ما إذا كان الواقع / حكم <م> موجود ، وكنت لا تريد الانتظار بعد عملية حسابية طويلة أن الدعوة قد تؤدي، وكنت لا تريد أن يكون شيء المطبوعة على الشاشة إذا دعا حكم بدورها تدعو على سبيل المثال writeln/1. وبالإضافة إلى ذلك، هل تريد verify/2 للنجاح حتى لو فشلت المكالمة (ولكن الحقيقة / القاعدة هو خلاف ذلك هناك).

وكحل، SWI-برولوج تقدم callable/1

callable(+Term)

True if Term is bound to an atom or a compound term,
so it can be handed without type-error to call/1, functor/3 and =../2.

وهنا اثنين نسخة من verify/2، واحد باستخدام call/1 والآخر callable/1 استخدام.

verify1(Name, Arguments) :-
    Term =.. [Name | Arguments],
    call(Term).

verify2(Name, Arguments) :-
    Term =.. [Name | Arguments],
    callable(Term).

father(abraham, isaac) :-
    writeln('hello').

father(abraham, adam) :-
    fail.

نصائح أخرى

هل أنت على دراية مع مفهوم التوحيد؟ ما عليك القيام به هو: ما عليك سوى الاتصال على المسند الذي يبدو وكأنه واحد كنت في محاولة للعثور

وهكذا، ويقول في قاعدة البيانات الخاصة بك هو:

father(abraham,isaac).

والآن تريد الاتصال شيئا مثل:

verify(father,[abraham,isaac]).
سوف

وجسمك المسند ثم يجب أن تحتوي على آلية الدعوة father(abraham,isaac). التي ينبغي ثم العودة true. الدعوة يجب أن تفشل father(abraham,adam).

وسوف تحتاج اثنين من المسندات لذلك: =../2 وcall/2. إذا كنت تستخدم SWI-حاسوب، اتصل help(=..). وhelp(call) من سطر الأوامر المترجم للوصول إلى الوثائق.

وأرجو أن أكون لا يفسد المهمة بالنسبة لك. لا يزال لديك لمعرفة ما يجب القيام به مع المسندات مثيل جزئيا (حتى، ويقول شيئا من هذا القبيل verify(father,[abraham,X]). بنفسك، ولكن لا ينبغي أن يكون من الصعب من هنا.

وحظا سعيدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top