Веб Зображення Новини Групи Блоги Перекладач Gmail Ще »
Групи, які ви переглядали нещодавно | Довідка | Увійти
Головна сторінка Груп Google
Avoid unnecessary evaluations
Занадто багато тем, що мають бути показані першими. Для того, щоб показати тему першою, зніміть цю опцію з іншої теми.
Під час обробки вашого запиту сталася помилка. Будь ласка, повторіть вашу спробу пізніше.
флаг
  3 повідомлення - Згорнути всі  -  Перекласти все вказаною мовою: Перекладено (переглянути всі оригінали)
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, наведені на зображенні нижче, або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Frank Poettgen  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 28 Тра, 16:36
Групи новин: comp.lang.haskell
Від: Frank Poettgen <Frank.Poett...@Post.RxWyTxH-AyAzCyHzEyN.de>
Дата: Thu, 28 May 2009 15:36:12 +0200
Місцевий час: Чт 28 Тра 2009 16:36
Тема: Avoid unnecessary evaluations
Assume that the evaluation of a function 'expensive' takes a lot of
time. Hence I want to avoid unnecessary evaluations of 'expensive'.

expensive :: Int -> (Int,Int)
expensive     x  =  (x,x)

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

Will 'expensive x' be evaluated twice to compute 'f x'?
If so, how can I avoid it?


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Florian Kreidler  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 28 Тра, 17:11
Групи новин: comp.lang.haskell
Від: Florian Kreidler <m...@privacy.net>
Дата: 28 May 2009 16:11:42 +0200
Місцевий час: Чт 28 Тра 2009 17:11
Тема: Re: Avoid unnecessary evaluations
Frank Poettgen <Frank.Poett...@Post.RxWyTxH-AyAzCyHzEyN.de> schrieb:

> Assume that the evaluation of a function 'expensive' takes a lot of
> time. Hence I want to avoid unnecessary evaluations of 'expensive'.

> expensive :: Int -> (Int,Int)
> expensive     x  =  (x,x)

> 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


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

Thanks a lot!

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

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