Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs