Кстати, а в хаскеле есть компайл-тайм вычисляения? Просто раз подразумевается, что это чисто функциональный яп, то логично было бы посяитать вообще всё, что не зависит от юзер-инпута
1. да, это просто оптимизация.
2. не логично, если вычисление очень тяжёлое, например, миллион знаков пи.
3. оптимизация не гарантирована, но есть ещё Template Haskell, который гарантирован, но надо явно его выделять