Выполнение ленивых вычислений в Haskell, когда аргументы появляются несколько раз

Скажем, У меня есть функция, которая может вычислять степень четырех числа, определенного

let power4 x = x*x*x*x

. И я пытаюсь передать x = (3 + 8) * 2

let result = power4 ((3 + 8)*2) 

Поскольку в Haskell значения вычисляются до тех пор, пока они не понадобятся, делает ли это значит, что x будет оценивать четыре раза? Если да, то есть ли способ улучшить компилятор Haskell?

Спасибо.

8
задан DB Tsai 11 October 2011 в 04:42
поделиться