Веб Зображення Новини Групи Блоги Перекладач Gmail Ще »
Групи, які ви переглядали нещодавно | Довідка | Увійти
Головна сторінка Груп Google
Допис з розмови Avoid unnecessary evaluations
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, наведені на зображенні нижче, або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Frank Poettgen  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 28 Тра, 18:01
Групи новин: comp.lang.haskell
Від: Frank Poettgen <Frank.Poett...@Post.RxWyTxH-AyAzCyHzEyN.de>
Дата: Thu, 28 May 2009 17:01:17 +0200
Місцевий час: Чт 28 Тра 2009 18:01
Тема: Re: Avoid unnecessary evaluations

Florian Kreidler wrote:
>> f :: Int -> Int
>> f     x  = fst (expensive x) + snd (expensive x)

>> Will 'expensive x' be evaluated twice to compute 'f x'?

> That will depend on your compiler. Some compilers do common
> subexpression elimination, others don't. The reason is that
> this transformation can sometimes introduce space leaks. In
> your case it wouldn't be dangerous, but you cannot rely on
> your compiler recognizing this.

>> If so, how can I avoid it?

> Rewrite the function by hand:

>   f x = fst e + snd e where e = expensive

> or, using pattern matching,

>   f x = l + r where (l, r) = expensive x

> or, more compact but less comprehensible,

>   f = uncurry (+) . expensive

Thanks a lot!

Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.

Створити групу - Групи Google - Домашня сторінка Google - Правила користування послугою - Заява про конфіденційність і нерозголошення інформації
©2009 Google