please also have a look at the following. In below mySubObject* is a subtype of myObjectList (I suppose otherwise the call test(SubObjectList) would not compile):
Code: Select all
interface myObject
end interface myObject
%---
class myObject : myObject
end class myObject
%---
implement myObject
end implement myObject
%===
interface mySubObject
supports myObject
end interface mySubObject
%---
class mySubObject : mySubObject
end class mySubObject
%---
implement mySubObject
inherits myObject
end implement mySubObject
%===
implement main
open core
domains
myObjectList = myObject*.
class predicates
test : (myObjectList).
clauses
test(_).
clauses
run() :-
SubObject = mySubObject::new(),
SubObjectList = [SubObject],
test(SubObjectList).
end implement main
Code: Select all
interface myObject
end interface myObject
%---
class myObject : myObject
end class myObject
%---
implement myObject
end implement myObject
%===
interface mySubObject
supports myObject
end interface mySubObject
%---
class mySubObject : mySubObject
end class mySubObject
%---
implement mySubObject
inherits myObject
end implement mySubObject
%===
implement main
open core
domains
myObjectList = myObject*.
mySubObjectList = mySubObject*. %added line
class predicates
test : (myObjectList).
clauses
test(_).
clauses
run() :-
SubObject = mySubObject::new(),
hasDomain(mySubObjectList, SubObjectList), %added line
SubObjectList = [SubObject],
test(SubObjectList).
end implement main
Code: Select all
interface myObject
end interface myObject
%---
class myObject : myObject
end class myObject
%---
implement myObject
end implement myObject
%===
interface mySubObject
supports myObject
end interface mySubObject
%---
class mySubObject : mySubObject
end class mySubObject
%---
implement mySubObject
inherits myObject
end implement mySubObject
%===
implement main
open core
domains
myObjectList = myObject*.
clauses
run() :-
SubObject = mySubObject::new(),
SubObjectList = [SubObject],
_ = convert(myObjectList, SubObjectList).
end implement main
Martin