Веб Зображення Новини Групи Блоги Перекладач Gmail Ще »
Групи, які ви переглядали нещодавно | Довідка | Увійти
Головна сторінка Груп Google
Laziness of sequence
Занадто багато тем, що мають бути показані першими. Для того, щоб показати тему першою, зніміть цю опцію з іншої теми.
Під час обробки вашого запиту сталася помилка. Будь ласка, повторіть вашу спробу пізніше.
флаг
  3 повідомлення - Згорнути всі  -  Перекласти все вказаною мовою: Перекладено (переглянути всі оригінали)
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, наведені на зображенні нижче, або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Lutz Donnerhacke  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 18 Вер, 19:03
Групи новин: comp.lang.haskell
Від: Lutz Donnerhacke <l...@iks-jena.de>
Дата: Fri, 18 Sep 2009 16:03:25 +0000 (UTC)
Місцевий час: Пт 18 Вер 2009 19:03
Тема: Laziness of sequence
During an interesting discussion in de.alt.sysadmin.recovery we touched
laziness issues of mapM.

> liftM (length) $ mapM Just [1,2,3,undefined]

Just 4

> liftM (take 3) $ mapM Just [1,2,3,undefined]

Just [1,2,3]

> liftM (take 3) $ mapM Just [1,2 ..]

_|_

This can be stripped down to the laziness behavior of sequence and from its
definition the strictness issues of (>>=).

Now the question arises, how to define sequence, to allow indefinite long
inputs?

Making it more complex did not help:
 sequence xs = foldr my (return []) xs
   where my = curry $ runKleisli $ Kleisli id *** Kleisli id >>^ uncurry (:)


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Dirk Thierbach  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 19 Вер, 00:46
Групи новин: comp.lang.haskell
Від: Dirk Thierbach <dthierb...@usenet.arcornews.de>
Дата: Fri, 18 Sep 2009 23:46:40 +0200
Місцевий час: Сб 19 Вер 2009 00:46
Тема: Re: Laziness of sequence

Lutz Donnerhacke <l...@iks-jena.de> wrote:
>> liftM (take 3) $ mapM Just [1,2,3,undefined]
> Just [1,2,3]

>> liftM (take 3) $ mapM Just [1,2 ..]
> _|_
> Now the question arises, how to define sequence, to allow indefinite long
> inputs?

If I understand you correctly, you would like the result Just [1,2,3]
instead of _|_ in the last example.

But that's unlikely to work. If you look at it in terms of sequence,

  liftM (take 3) $ sequence [Just 42, Just 13, Just 7, ....]

the result depends on the whole list, not just the initial segment: If
there's a Nothing *anywhere* in the list, the result is Nothing, otherwise
it's Just [42,13,7]. So the result can only be determined after
inspecting *all* of the remaining list. If the list is infinite, this
cannot happen in finite time.

- Dirk


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Lutz Donnerhacke  
Переглянути профіль   Перекласти вказаною мовою: Перекладено (переглянути оригінал)
 Більше налаштувань 21 Вер, 03:23
Групи новин: comp.lang.haskell
Від: Lutz Donnerhacke <l...@iks-jena.de>
Дата: Mon, 21 Sep 2009 00:23:07 +0000 (UTC)
Місцевий час: Пн 21 Вер 2009 03:23
Тема: Re: Laziness of sequence

* Dirk Thierbach wrote:
> the result depends on the whole list, not just the initial segment: If
> there's a Nothing *anywhere* in the list, the result is Nothing, otherwise
> it's Just [42,13,7].

That was the point, I missed. And that is the reason why (bind) is strict in
both arguments for the Monad Maybe. Thank you.

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

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