128 Geometry Example
// Component: geometry
value Point
{
Real x;
Real y;
}
@domain("A circle which is a locus of points in ℝ^2")
value Circle
{
@predicate("The centre of the circle is [centre]")
Point centre;
@predicate("The radius of the circle is [radius]")
Real radius;
}
entity Wheel
{
embed Circle;
Real mass;
}
var x = 10;
var s = "hello";
var y = x + 1;
var p = Point { x = 3.2, y = 4.7 };
var c = Circle { centre = geometry.Point { x = 1.0, y = 2.0 }, radius = 5.0 };
var r = c.radius;
r := r + 1;
print p,c,r;
/*
Alternative embed forms:
value Circle
{
Point centre;
Real radius;
}
entity Wheel
{
embed Circle; // get centre and radius
Real mass;
}
entity Wheel
{
embed Circle as circle; // get circle, centre, radius
Real mass;
}
*/