Darren Duncan wrote:
Dave Whipp wrote:
sub sqrt(Num where { 0 <= $_ <= Real::Max } $x) {
(0..$x/2 :by(Real::Epsilon)).min: { abs $x - $^candidate ** 2 }
}
So do you really mean "as declarative a manner as possible"? Or would
you consider this example to go beyond "possible"?
I would declare sqrt this way instead (the body is the important change):
sub sqrt(Num where { 0 <= $_ <= Real::Max } $x) {
$x ** (1/2)
}
In other words, you prefer explicit definition to implicit declaration
(in this case, you're basically saying that "sqrt" is a curried
exponentiation). Do you have any examples of what you'd propose as
declarative forms for prelude.pm?