Strategies and analysis techniques for functional program optimization