Python notes

Here are a few python tricks

§    Eliminate tail recursion

Formerly at
import types

TRE_magic = "TRE magic string"

def TREcont(fn, *rest): 
        def fncont(*rest): 
            return fn(cont=TREcont, *rest)
        return (TRE_magic, fncont, rest)

def TRE(fn, *rest):
        x = fn(cont=TREcont, *rest)
        while isinstance(x, types.TupleType) and (x[0] is TRE_magic):
          x = x[1](*x[2])
        return x

def factorial(n,acc=1,cont=TRE):
        if n <= 1: return acc
        else:      return cont(factorial,n-1,acc*n)

§    Interactive help

>>> dir()
>>> dir('__builtins__')
>>> help()
help> keywords
help> modules

§    List all keywords

import keyword; print keyword.kwlist


Return to parent directory.