[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

On Thu, Sep 6, 2018 at 2:29 PM, Marko Rauhamaa <marko at pacujo.net> wrote: > Marko Rauhamaa <marko at pacujo.net> (Marko Rauhamaa): >> Steven D'Aprano <steve+comp.lang.python at pearwood.info>: >>> 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 >> [...] >> You must make sure "r" doesn't leak outside its syntactic context so: >> >> def isqrt(n): >> if n == 0: >> return 0 >> else: >> def f2398478957(): >> r = isqrt(n//4) >> if n < (2*r+1)**2: >> return 2*r >> else: >> return 2*r+1 >> return f2398478957() > > Actually, this is a more direct translation: > > def isqrt(n): > if n == 0: > return 0 > else: > def f2398478957(r): > if n < (2*r+1)**2: > return 2*r > else: > return 2*r+1 > return f2398478957(isqrt(n//4)) > I don't understand why you created that nested function instead of something simple like renaming the variable. Is there a difference here? ChrisA

- Prev by Date:
**[SOLVED]: problem with json.dumps / complexjson.loads in python 3.4 virtualenv** - Next by Date:
**Any SML coders able to translate this to Python?** - Previous by thread:
**Any SML coders able to translate this to Python?** - Next by thread:
**Any SML coders able to translate this to Python?** - Index(es):