class Dog {
	public string $name;
	public string $color;

	public void __construct(string $name, string $color) {
		$this->name = $name;
		$this->color = $color;
	}

	public callback greet(string $greeting) {
		return void() using ($greeting) {
			print("$greeting, I am a {$this->color} dog named {$this->name}\n");
		};
	}
}

class Program {

	public void main() {
		object $dog = new Dog('Alex', 'red');
		callback $c = $dog->greet('Hello');
		$c();
	}
}