The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

role Duration;

has Date $.start;
has Date $.end;
has Num $.length;

method add($self: Duration $duration) returns Duration {
    $self.new($self.length + $duration.length);
}

method subtract($self: Duration $duration) returns Duration {
    $self.new($self.length - $duration.length);
}

method infix:<->($self: Duration $duration) returns Duration {
    $self.subtract($duration);
}

method infix:<+>($self: Duration $duration) returns Duration {
    $self.add($duration);
}