metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-03-28 05:20 pm

Ленивость+побочные эффекты

Второй день созерацию результаты "отсутствия монады IO, нечистоты и опциональной ленивости" в F#. Читаю из базы данных структуру данных ленивым образом - какой-то только, прости меня господи, херни не творится при этом. То значение прочитается после закрытия DataReader из которого оно читается, то команда окажется закрытой уже. Хорошо хоть в контексте коннекта и транзакции я уверен - вся работа происходит внутри их.

Предполагаю, что при определенном уровне сложности проще все будет сделать неленивым и всасывать в память, чем разбираться в стеках вызовов в которых половина фреймов - из автосгенеренных классах с малопонятными именами. Отладчиком по большей части этого всего пройтись невозможно - он не работает.

[identity profile] nealar.livejournal.com 2010-03-28 07:05 pm (UTC)(link)
У Олега был специальный такой fold, который может на любом шаге оборвать вычисление и выйти. Правда, не знаю, на какие языки оно переносимо сходу, а на какие - с бубном.

[identity profile] metaclass.livejournal.com 2010-03-28 08:00 pm (UTC)(link)
Особо в этом комментарии радует, что все кому надо - знают, о каком Олеге идет речь и где это искать :))

[identity profile] lastwalrus.livejournal.com 2010-03-29 04:20 pm (UTC)(link)
Ну значит тебе еще рано в секту :))

[identity profile] metaclass.livejournal.com 2010-03-29 06:18 pm (UTC)(link)
Так я тоже знаю о чем речь :)

[identity profile] alpha-cygnus.livejournal.com 2010-03-29 08:39 pm (UTC)(link)
А я не знаю. Доктор, что со мной? Не, а правда, что за Олег? Может я всё же знаю, но не знаю, что знаю?

[identity profile] nealar.livejournal.com 2010-03-30 05:53 am (UTC)(link)
Олег Киселёв http://okmij.org/ftp.

Всё, теперь ты - наш :))))

[identity profile] gds.livejournal.com 2010-03-28 08:04 pm (UTC)(link)
если брать в общем, у Олега есть delimited call/cc, там не только fold может оборвать вычисление, а вообще любая функция. Хорошая штука, но из-за бубна как раз не понравилась.

[identity profile] nealar.livejournal.com 2010-03-28 08:35 pm (UTC)(link)
delimited continuations я ещё не курил.
Прям щаз пытаюсь понять, как сделан Takusen и насколько это практично: http://okmij.org/ftp/Haskell/fold-stream.lhs

если кто пойдёт по порочному пути

[identity profile] nealar.livejournal.com 2010-03-30 05:51 am (UTC)(link)
Сначала читать вот это: http://okmij.org/ftp/papers/LL3-collections-enumerators.txt

Я начал с предыдущей ссылки, и это было неправильно.

Re: если кто пойдёт по порочному пути

[identity profile] metaclass.livejournal.com 2010-03-30 06:32 am (UTC)(link)
А, во. Я как раз не мог понять с чего там начинать - слишком много не совсем организованных ссылок.