================================================================
Logtalk - Open source object-oriented logic programming language
Release 2.30.7

Copyright (c) 1998-2007 Paulo Moura.  All Rights Reserved.
================================================================


% start by loading the example:

| ?- logtalk_load(parametric(loader)).
...


% some queries using the list parametric object:

| ?- [1, 2, 3]::member(X).

X = 1 ;
X = 2 ;
X = 3 ;
no

| ?- [1, 2, 3]::last(X).

X = 3
yes

| ?- [1, 2, 3]::nextto(2, Y).

Y = 3
yes

| ?- []::member(X).

no


% some queries using the time and date parametric objects:

| ?- date(Year, Month, Day)::today.

Year = 2000
Month = 8
Day = 15 
yes


| ?- date(Year, _, _)::(today, \+ leap_year). 

Year = 2002
yes


| ?- time(Hours, Mins, Secs)::now.

Hours = 13
Mins = 52
Secs = 42 
yes


| ?- R = rectangle(W, H, X, Y), R::init, R::move(3, 4, NR), NR::position(X2, Y2).

R = rectangle(2, 1, 0, 0)
W = 2
H = 1
X = 0
Y = 0
NR = rectangle(2, 1, 3, 4)
X2 = 3
Y2 = 4 
yes


% some queries with parametric objects that define "setter"
% methods that return updated object identifiers:

| ?- person(sally, 20)::grow_older(NewId).

NewId = person(sally, 21) 
yes


| ?- employee(sally, 21, 1200)::give_raise(250, NewId).

NewId = employee(sally, 21, 1450) 
yes