Bonjour, je m'appelle pmix, je suis une petite machine du mix marketing, je suis à peinne fonctionnel peut-être, et justement je souhaiterais comprendre pourquoi, mon précat mix/3 de fonctionne pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/******************************************************************************/
/*                                                                            */
/*                               Mix markeking                                */
/*                                                                            */
/*                                 S.P.I.R.                                   */
/*                                                                            */
/*                                 Solution                                   */
/*                                                                            */
/*                               Version 1.0.0                                */
/*                                                                            */
/******************************************************************************/
/* Date        : 2018-03-27 04:00:00                                          */
/* Author      : arknos                                                       */
/* Version     : 1.0.0                                                        */
/* Description : S.P.I.R. solution                                            */
/******************************************************************************/

:- dynamic ( mix/7 ).
:- dynamic ( result/3).

prompt(Prompt) :- prompt1(Prompt).
message(Message) :- write(Message), nl.
dialog(Message,
       Prompt,
       Response) :- message(Message),
                    prompt(Prompt),
                    read(Response).

contact(Name) :- dialog("", "LOGON : ", Name).

who(Dealer) :- dialog("Who ?", "dealer : ", Dealer).
what(What) :- dialog("What ?", "what : ", What).
where(Where) :- dialog("Where ?", "where : ", Where).
when(When) :- dialog("When ?", "when : ", When).
howto(Howto) :- dialog("How to ?", "how to : ", Howto).
quantity(Quantity) :- dialog("How many ?", "how many : ", Quantity).
price(Price) :- dialog("How much ?", "price : ", Price).

situation(Mix) :-
    who(Dealer),
    what(What),
    where(Where),
    when(When),
    howto(Howto),
    quantity(Quantity),
    price(Price),
    assertz((mix(Dealer, What, Where, When, Howto, Quantity, Price))),
    Mix = [Dealer, What, Where, When, Howto, Quantity, Price].


split([Dealer, What, Where, When, Howto, Quantity, Price],
      Dealer, What, Where, When, Howto, Quantity, Price).

problem(dealer, Mix, Values)   :-
    split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
    findall(Value,
            mix(Value, What, Where, When, Howto, Quantity, Price), Values).
problem(what, Mix, Values)     :-
    split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
    findall(Value,
            mix(Dealer, Value, Where, When, Howto, Quantity, Price), Values).
problem(where, Mix, Values)    :-
    split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
    findall(Value,
            mix(Dealer, What, Value, When, Howto, Quantity, Price), Values).
problem(when, Mix, Values)     :-
    split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
    findall(Value,
            mix(Dealer, What, Where, Value, Howto, Quantity, Price), Values).
problem(howto, Mix, Values)    :-
    split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
    findall(Value,
            mix(Dealer, What, Where, When, Value, Quantity, Price), Values).
problem(quantity, Mix, Values) :-
    split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
    findall(Value,
            mix(Dealer, What, Where, When, Howto, Value, Price), Values).
problem(price, Mix, Values)    :-
    split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
    findall(Value,
            mix(Dealer, What, Where, When, Howto, Quantity, Value), Values).

problem(Problem) :- dialog("What is the problem ? ", "problem : ", Problem).

implication(Mix, Problem, Values) :- message("Result searching..."),
                                     problem(Problem, Mix, Values).

problem(Name, Mix, Problem) :- assertz((result(Name, Mix, Problem))).

deal :- situation(Mix),
        problem(Problem),
        implication(Mix, Problem, Values),
        write("New values : "), write(Values), nl,
        contact(Name),
        problem(Name, Mix, Problem).
Pourtant il montre des signes d'exitance si vous terminez tout les prompt directement par Ctrl+D.

Je suis un petite machine avec Prolog, robuste souple, puisante complexe et/ou simple.

Voici un court exemple de mon utilisation :

Après l'appel de deal/0 vous pourez lancer vos requête de result/3.
?- result(arknos, [Dealer, What, Where, now, [with, Language], Quantity, Price], price).
Dealer = me,
What = pmix,
Where = 'Internet',
Language = 'Prolog',
Quantity = 1,
Price = 10 ;
Dealer = me,
What = np,
Where = 'Internet',
Language = 'Ada',
Quantity = 1,
Price = 50 ;
Dealer = me,
What = npmix,
Where = 'Internet',
Language = 'Ada'/'Prolog',
Quantity = 1,
Price = 100.

?-

En vous souhaitant une bonne découverte de Prolog ou de mon code. Merci pour vos retours.