I have this snippet of SML code which I'm trying to translate to Python: fun isqrt n = if n=0 then 0 else let val r = isqrt (n/4) in if n < (2*r+1)^2 then 2*r else 2*r+1 end
I've tried reading up on SML and can't make heads or tails of the "let...in...end" construct. The best I've come up with is this: def isqrt(n): if n == 0: return 0 else: r = isqrt(n/4) if n < (2*r+1)**2: return 2*r else: return 2*r+1 but I don't understand the let ... in part so I'm not sure if I'm doing it right. -- Steven D'Aprano "Ever since I learned about confirmation bias, I've been seeing it everywhere." -- Jon Ronson -- https://mail.python.org/mailman/listinfo/python-list