Changeset 4470 for trunk/examples

Show
Ignore:
Timestamp:
09/22/08 08:18:55 (4 months ago)
Author:
pmoura
Message:

Added a syntax construct for easy access to parametric object proxies represented as Prolog facts when sending a message ({Proxy}::Message). Updated the "proxies" example to illustrate this new functionality.

Location:
trunk/examples/proxies
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/examples/proxies/proxies.lgt

    r3227 r4470  
    33% object proxy arguments and to encapsulate relevant predicates: 
    44 
    5 :- object(circle(_Radius, _Color)). 
     5:- object(circle(_Id, _Radius, _Color)). 
    66 
    77    :- public([ 
    8         radius/1, 
    9         color/1, 
    10         area/1, 
    11         perimeter/1, 
    12         print/0]). 
     8        id/1, radius/1, color/1, 
     9        area/1, perimeter/1, 
     10        print/0 
     11    ]). 
     12 
     13    id(Id) :- 
     14        parameter(1, Id). 
    1315 
    1416    radius(Radius) :- 
    15         parameter(1, Radius). 
     17        parameter(2, Radius). 
    1618 
    1719    color(Color) :- 
    18         parameter(2, Color). 
     20        parameter(3, Color). 
    1921 
    2022    area(Area) :- 
     
    2729 
    2830    print :- 
    29         area(Area), write('area: '), write(Area), 
     31        id(Id), write('id: '), write(Id), 
     32        area(Area), write(', area: '), write(Area), 
    3033        perimeter(Perimeter), write(', perimeter: '), write(Perimeter), 
    3134        color(Color), write(', color: '), write(Color), nl. 
     
    3437 
    3538 
    36 % parametric object proxies (with an extra argument to represent identity): 
     39% parametric object proxies: 
    3740 
    3841circle('#1', 1.23, blue). 
  • trunk/examples/proxies/SCRIPT.txt

    r4466 r4470  
    1818% print the area and the perimeter for all circle proxies: 
    1919 
    20 | ?- forall(circle(Id, R, C), (write(Id), write(' '), circle(R, C)::print)). 
     20| ?- forall(circle(Id, R, C), circle(Id, R, C)::print). 
    2121 
    22 #1 area: 4.75291, perimeter: 7.72831, color: blue 
    23 #2 area: 43.2412, perimeter: 23.3106, color: yellow 
    24 #3 area: 0.477836, perimeter: 2.45044, color: green 
    25 #4 area: 103.508, perimeter: 36.0655, color: black 
    26 #5 area: 217.468, perimeter: 52.2761, color: cyan 
    27 yes 
     22id: #1, area: 4.75291, perimeter: 7.72831, color: blue 
     23id: #2, area: 43.2412, perimeter: 23.3106, color: yellow 
     24id: #3, area: 0.477836, perimeter: 2.45044, color: green 
     25id: #4, area: 103.508, perimeter: 36.0655, color: black 
     26id: #5, area: 217.468, perimeter: 52.2761, color: cyan 
     27true. 
     28 
     29 
     30% print the area and the perimeter for the circle #2: 
     31 
     32| ?- {circle('#2', R, C)}::print. 
     33 
     34id: #2, area: 43.2412, perimeter: 23.3106, color: yellow 
     35R = 3.71, 
     36C = yellow.