[Python-ideas] Inline Functions - idea

Alex Rodrigues lemiant at hotmail.com
Mon Feb 10 19:49:55 CET 2014


Over the last few days I've been considering a lot of what we talked about regarding Python scoping and inline functions. Today I found a further use case for inline functions (one which is a fair bit harder to replicate using standard techniques). I was working on writing a basic linear algebra calculator for school and one of the annoying things about doing it is that every time you want to do an element-wise operation on the matrix (which is a list of lists) you have to nest what is essentially one line of code inside a pair of for loops. 
Below I've done three basic linear algebra functions which are written as if there was a builtin "inline()" which transformed a standard function into an inline function and also assuming that python had more powerful lambdas. I feel that these represent a good use case, because the inline function serves to make the code both shorter and clearer.


import copy

@inline
def element_wise(func):
    func = inline(func) 
    for i, row in enumerate(matrix):
        result.append([0]*len(row))
        for j, el in enumerate(row):
            func()

def is_symmetric(matrix):
    element_wise(lambda: if matrix[i][j] != matrix[j][i]: return False)
    return True
            
def matrix_add(matrix, matrix2):
    result = copy.deepcopy(matrix)
    element_wise(lambda: result[i][j] = matrix[i][j] + matrix2[i][j])
    return result

def matrix_multiply(matrix, matrix2):
    result = copy.deepcopy(matrix)
    element_wise(lambda: result[i][j] = sum([a*b for a,b in zip(matrix[i], [r[j] for r in matrix2])]))
    return result 		 	   		  


More information about the Python-ideas mailing list