An implementation of backtracking for programming languages