Abstract machines, optimal reduction, and streams