Download
23 lines 454 BTextModified 2022-09-10 raw
1234567891011121314151617181920212223

extern sqrt(n:Num):Num

def sqrt_optional(n:Num):Num?
    if n < 0.
        return nil:Num?
    else
        return sqrt(n)

for x in [9.,-1.,-2.,-3.,-999.,4.]
    say "x = $x"
    do
        x = sqrt_optional(x) or skip
        say "First: $x"
    else
        x = sqrt_optional(x+1.) or skip
        say "Second: $x"
    else
        x = sqrt_optional(x+2.) or skip
        say "Third: $x"
    else
        stop if x < -5.
        say "I give up: $x"