Re[47]: динамическая абстрактная фабрика на D
От: WolfHound  
Дата: 25.01.07 15:38
Оценка:
Здравствуйте, FR, Вы писали:

FR>Ну надо же чуть внимательнее смотреть же там разные конкретные фабрики присваиваются одной и той же переменной. Ты же мне в своем примере это болдом выделял

А параметры в конструкторы как передать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[39]: Как скрестить ужа и ежа или статическую и утиные тип
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 25.01.07 16:59
Оценка: 1 (1)
Здравствуйте, lomeo, Вы писали:

L>Кстати! Неоднократно замечаю, что на рсдн паттерн матчингу какую то мистическую роль ужасного упрощателя кода отводят. На самом деле на столь низком уровне пишут редко. Самым полезным оказываются ФВП. В частности при имеющейся библиотеке комбинаторов для парсинга при написании лексера и синтаксического анализатора паттерн матчинг не нужен вообще. Для задач парсинга, разумеется.


Можно еще добавить, что комбинаторы парсеров прекрасно пишуться как для функциональных, так и для ООП языков.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[49]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.01.07 19:02
Оценка:
Здравствуйте, Tonal-, Вы писали:

T>Если я правильно помню, то и python и немерл этот синтаксис заимствовал из Haskell.


Не правильно помнишь. Питон чут ли не старше Хаскеля, да и язык императивный.
Немерле заимствовал синтаксис из O'Caml-а и C#.

T>А насчёт скрипта — можешь определение дать какой язык является скриптом, а какой нет?


Снова дать ссылку на Википедию?

T>Так же как Немерл в будет проигрывать там где статическая типизация ограничивает.


Бесспорно. Там где нужно раздолбаство и грязь Немерлу не место.

T>К Python тоже прикручивается что угодно.


Не совсем. Синтаксис в нем менять нельзя, в отличии "от". Ну, и опять же все это за счет рантайма, что с одной стороны не дает эффективно компилировать код, а с другой увеличивает количество ошибок которые надо ловить в рантайме.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.01.07 19:02
Оценка: +1 -2
Здравствуйте, lomeo, Вы писали:

L>Нет.

L>Представь, что нам надо прочитать пару символов из потока ввода.
L>Представь, что язык неленив.

L>[getchar, getchar]


L>Т.к. язык чистый, то скорее всего второго вызова getchar не будет,


Если не ленив, то и думать "нужно не нужно" не прийдется.

L>т.к. он вернёт (должен! если исходить из чистоты языка) тот же самый результат, что и первый. И при чём тут лень?


При том. Но суть моих слов в общем-то не в том. Я хотел сказать, что все эти идеологические навороты никому не нужны кроме писающих кипятком эстетов теоретиков.
А вот мозгогрёбство которое учиняют авторы Хаскеля портят жизнь всем кто пытается изучить этот язык.

Так что все эти монады, как и полная "чистота" языка — это натуральное вредительство если предположить, что язык создавался для практического использования, а не для кунскамеры.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[50]: Как скрестить ужа и ежа или статическую и утиные тип
От: Tonal- Россия www.promsoft.ru
Дата: 26.01.07 08:01
Оценка:
Здравствуйте, VladD2, Вы писали:
T>>Если я правильно помню, то и python и немерл этот синтаксис заимствовал из Haskell.
VD>Не правильно помнишь. Питон чут ли не старше Хаскеля, да и язык императивный.
VD>Немерле заимствовал синтаксис из O'Caml-а и C#.
Я говорил про конкретный списковый синтаксис.
В Python-е он появился во 2ой версии и заимствован из Haskell.
По твоим словам, выходит что Немерле заимствовал его из O'Caml-а.
Где он появился раньше, в Haskell-е или O'Caml-а я не в курсе.

T>>А насчёт скрипта — можешь определение дать какой язык является скриптом, а какой нет?

VD>Снова дать ссылку на Википедию?
Если взять определение из Википедии, то скриптовый язык, это язык разработанный и использующийся для автоматизации рутинных действий.
В таком случае, Python не является скриптовым, потому что разрабатывался не для скриптования.
В такой же позиции окажется и Немерл если использовать его для этой самой автоматизации. (а что мешает)

T>>Так же как Немерл в будет проигрывать там где статическая типизация ограничивает.

VD>Бесспорно. Там где нужно раздолбаство и грязь Немерлу не место.
Думаю, если подобные аргументы нужны, то либо язык никуда не годиться, либо тот кот приводит подобные аргументы.

T>>К Python тоже прикручивается что угодно.

VD>Не совсем. Синтаксис в нем менять нельзя, в отличии "от".
Синтаксическое дерево ты получить можешь, а так же байт-код.
Есть несколько проектов, которые это используют.
Кроме того есть перегрузка операторов, декораторы и метаклассы — соответственно, даже штатными средствами можно получить очень большую вариабельность.

VD>Ну, и опять же все это за счет рантайма, что с одной стороны не дает эффективно компилировать код, а с другой увеличивает количество ошибок которые надо ловить в рантайме.

Собственно тред и начался с планов ввода статики.
Причём, большое колмчество ошибок вполне можно найти до рантайме, используя утилиты проверки.
Re[48]: динамическая абстрактная фабрика на D
От: FR  
Дата: 26.01.07 09:04
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, FR, Вы писали:


FR>>Ну надо же чуть внимательнее смотреть же там разные конкретные фабрики присваиваются одной и той же переменной. Ты же мне в своем примере это болдом выделял

WH>А параметры в конструкторы как передать?

Ты все-таки читай тему
Пока никак.
Можно легко прикрутить стратегии для создания в которых ручками описывать нужные типы парметров.
Совместить динамическую фабрику с передачей вызовов пока у меня не получилось буду ковырять. Хотя можно на форум D послать, там говорят Александреску крутится, это по его части пусть работает
Re[18]: Как скрестить ужа и ежа или статическую и утиные тип
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.01.07 09:40
Оценка: 21 (2) +1
Здравствуйте, VladD2, Вы писали:

L>>Нет.

L>>Представь, что нам надо прочитать пару символов из потока ввода.
L>>Представь, что язык неленив.

L>>[getchar, getchar]


L>>Т.к. язык чистый, то скорее всего второго вызова getchar не будет,


VD>Если не ленив, то и думать "нужно не нужно" не прийдется.


Поясни, что ты имеешь в виду. Покажи как просто делается в чистом неленивом языке ввод-вывод.

L>>т.к. он вернёт (должен! если исходить из чистоты языка) тот же самый результат, что и первый. И при чём тут лень?


VD>При том.


При чём при том? Я тебе показал неленивый вариант.
Вот явно энергичное исполнение:

> let foo = trace "here" 5
> foo `seq` foo
"here"
5


seq заставляет выполниться первый аргумент, затем выполняет второй. Лени здесь и в помине нет, тем не менее из-за чистоты языка второй раз foo не выполняется.

Если ты не веришь мне — почитай для решения каких проблем были созданы монады. Пейтон-Джонс, Худак, Вадлер, Хьюз — создатели языка, говорят, о чистоте языка.

VD>Но суть моих слов в общем-то не в том. Я хотел сказать, что все эти идеологические навороты никому не нужны кроме писающих кипятком эстетов теоретиков.

VD>А вот мозгогрёбство которое учиняют авторы Хаскеля портят жизнь всем кто пытается изучить этот язык.

VD>Так что все эти монады, как и полная "чистота" языка — это натуральное вредительство если предположить, что язык создавался для практического использования, а не для кунскамеры.


Все фразы, кроме, возможно, первой — ложь. Ты проецируешь свой вкус, отношение и проблемы на всех: "портят жизнь всем", "не нужны никому кроме", "мозгогрёбство", "натуральное вредительство".

И вообще, это всего лишь взгляд на язык, тем более очень предвзятый. Вот другой предвзятый взгляд, смотрящий, в принципе, на то же самое, что и ты:

"Я хотел сказать, что все эти решения сделаны весьма изящно для теоретических исследований. Хотя тем, кто изучает язык, они не сразу дадутся, тем не менее чистота языка и монады — замечательная помощь для практического использования языка."

Насчёт цели создания языка: авторы пишут о том, что цели были определены как создание языка, предоставляющий быстрое сообщение новых идей, имеющий стабильное основание для разработки реальных приложений, являющийся "распространителем" ФП (потворствующий использованию ФЯ). Цели стать мейнстримом у них не было ;) К практическому же использованию язык готов, что видно из того, что его практически используют.
Re[51]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.01.07 11:15
Оценка:
Здравствуйте, Tonal-, Вы писали:

T>Я говорил про конкретный списковый синтаксис.

T>В Python-е он появился во 2ой версии и заимствован из Haskell.

Ты меня извини, но без ссылок такие заявления ничего не стоят.
Haskell является наследником ML и во многом заимствовал синтаксис у него.
Немерле тоже, но через O'Caml. А Питон уж точно вряд ли мог что-то там заимствовать у Хаскеля.
В общем, ссылки в студию...

T>По твоим словам, выходит что Немерле заимствовал его из O'Caml-а.

T>Где он появился раньше, в Haskell-е или O'Caml-а я не в курсе.

T>Если взять определение из Википедии, то скриптовый язык, это язык разработанный и использующийся для автоматизации рутинных действий.


Плохо читал.

T>В таком случае, Python не является скриптовым, потому что разрабатывался не для скриптования.


Нет в руском языке слова "скриптования". Не надо его применять.
И Питон конечно же вряд ли создавался как язык общего назначения.

T>В такой же позиции окажется и Немерл если использовать его для этой самой автоматизации. (а что мешает)


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

T>>>Так же как Немерл в будет проигрывать там где статическая типизация ограничивает.

VD>>Бесспорно. Там где нужно раздолбаство и грязь Немерлу не место.
T>Думаю, если подобные аргументы нужны, то либо язык никуда не годиться, либо тот кот приводит подобные аргументы.

Тебе, естествнно, виднее.

T>>>К Python тоже прикручивается что угодно.

VD>>Не совсем. Синтаксис в нем менять нельзя, в отличии "от".
T>Синтаксическое дерево ты получить можешь, а так же байт-код.

Дерево — это круто. Можно будет дрова сделать. А путно что-то вряд ли. По крайней мере затрахашся со стамеской париться.

T>Есть несколько проектов, которые это используют.

T>Кроме того есть перегрузка операторов, декораторы и метаклассы — соответственно, даже штатными средствами можно получить очень большую вариабельность.

Все это детский лепет. Изучи макросы Немерла тогда поговрим. Пока что ты просто не понимаешь о чем говоришь. Это разный уровень. Все равно что эмуляция ООП на ассемблере.

T>Собственно тред и начался с планов ввода статики.


Ага. Вот только на сегодня Неперле — это где она введена и на 100%. Причем введена грамотно, на высоком научном уровне. А Питон только собирается попробовать это сделать.
Собсвтенно с автором Питона я всецело согласен. Он человек весьма адекватный. Просто базы не имеет. Я не согласен с фанатами питона. Бессмысленными и беспощадными (с).

T>Причём, большое колмчество ошибок вполне можно найти до рантайме, используя утилиты проверки.


Все можно найти. Вопрос только в цене. Искать ошибки в рантайме сложнее чем читать лог компилятора. Так что не размуно оправдывать тем что ошибку можно найти потом то что ее вообще надо допускать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: динамическая абстрактная фабрика на D
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.01.07 11:15
Оценка:
Здравствуйте, FR, Вы писали:

FR>Пока никак.

FR>Можно легко прикрутить стратегии для создания в которых ручками описывать нужные типы парметров.
FR>Совместить динамическую фабрику с передачей вызовов пока у меня не получилось буду ковырять. Хотя можно на форум D послать, там говорят Александреску крутится, это по его части пусть работает

Хорошая идея (это я про Александреску). Но тем не менее даже если он расколит этот орешик проблема все же останется. Ведь простой программист не сог решить эту проблему. Меж тем на макросах ты бы ее решил точно.

Так что на лицо ограниченность. Именно о такой ограниченности говорил Камил Скальски (один из авторов Немерла) в статье о метапрограммирвонии в Немерле когда говорил о конкурирующих технолохия вроде МетаХаскеле. Нужные вщеи сделать откровенно сложно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.01.07 11:33
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Поясни, что ты имеешь в виду. Покажи как просто делается в чистом неленивом языке ввод-вывод.


Если язык не линив, то все что в нем выполняется выполняется строго последотвательно. Так что специальных действий не надо предпринимать.

Таким образом можно просто говорить, что скажем блок кода или функция строгая (или как хочешь ее назови) и все что в ней вызвается должно будет вызваться послдовательно.

L>Если ты не веришь мне — почитай для решения каких проблем были созданы монады. Пейтон-Джонс, Худак, Вадлер, Хьюз — создатели языка, говорят, о чистоте языка.


Я вижу что модады были созданы исключительно для траханья мозга окружающим. Хаскель исполняется на обычном компьютере и для перестройки очередности выполенения, и для ленивости нужно предпринимать усилия. Достаточно просто их не придпренять и все само собой будет как надо.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Как скрестить ужа и ежа или статическую и утиные тип
От: deniok Россия  
Дата: 26.01.07 11:52
Оценка: 8 (1) +2
Здравствуйте, VladD2, Вы писали:


VD>Я вижу что модады были созданы исключительно для траханья мозга окружающим. Хаскель исполняется на обычном компьютере и для перестройки очередности выполенения, и для ленивости нужно предпринимать усилия. Достаточно просто их не придпренять и все само собой будет как надо.


И SQL исполняется на обычном компьютере, но порядок выполнения JOIN в

SELECT ...
 FROM a JOIN b ON ...
    JOIN c ... ON ...


не определяется тем, в какой последовательности они записаны пользователем. Не заданный жёстко порядок вычислений — вообще довольно характерная черта декларативного программирования.
Re[50]: динамическая абстрактная фабрика на D
От: FR  
Дата: 26.01.07 12:01
Оценка:
Здравствуйте, VladD2, Вы писали:

FR>>Совместить динамическую фабрику с передачей вызовов пока у меня не получилось буду ковырять. Хотя можно на форум D послать, там говорят Александреску крутится, это по его части пусть работает


VD>Хорошая идея (это я про Александреску). Но тем не менее даже если он расколит этот орешик проблема все же останется. Ведь простой программист не сог решить эту проблему. Меж тем на макросах ты бы ее решил точно.


Ну как с помощью одного хака решить я уже понял, но хочется без

VD>Так что на лицо ограниченность. Именно о такой ограниченности говорил Камил Скальски (один из авторов Немерла) в статье о метапрограммирвонии в Немерле когда говорил о конкурирующих технолохия вроде МетаХаскеле. Нужные вщеи сделать откровенно сложно.


Он прав насчет ограниченности. Но другой вопрос можно ли преодолеть эту ограниченность. По моему да, но нужно добавить некторые возможности, такие как генерацию классов.

Да интересно вы с Tonal- ругаетесь прямо дежавью какое-то Правда помню ты так же упорно отстаивал что менее выразительный C# не хуже питона
Кстати ван Россум тайный почитатель хаскеля и я тоже слышал что списки он оттуда содрал.
Re[20]: Как скрестить ужа и ежа или статическую и утиные тип
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.01.07 12:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Если язык не линив, то все что в нем выполняется выполняется строго последотвательно. Так что специальных действий не надо предпринимать.


Ты ошибаешься.

VD>Таким образом можно просто говорить, что скажем блок кода или функция строгая (или как хочешь ее назови) и все что в ней вызвается должно будет вызваться послдовательно.


В чистом языке (как в Haskell) может не быть понятия последовательности. Функция — это функция в математическом смысле. Запись f(a,b) не определяет в каком порядке будут вычисляться аргументы.

VD>Я вижу что модады были созданы исключительно для траханья мозга окружающим.


Нет, цели были другими.

VD>Хаскель исполняется на обычном компьютере и для перестройки очередности выполенения, и для ленивости нужно предпринимать усилия. Достаточно просто их не придпренять и все само собой будет как надо.


Ну, я же не сам эти усилия предпринимаю. За меня это делает компилятор. А я получаю следующие из этих свойств бонусы.
Re[21]: Как скрестить ужа и ежа или статическую и утиные тип
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.01.07 12:18
Оценка: :)
Здравствуйте, deniok, Вы писали:

D>И SQL исполняется на обычном компьютере, но порядок выполнения JOIN в


К сожалению, в РСДН нет оценки "Кстати, да!". +1 — не совсем то.
Re[21]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.01.07 12:22
Оценка:
Здравствуйте, deniok, Вы писали:

D>И SQL исполняется на обычном компьютере, но порядок выполнения JOIN в

D>не определяется тем, в какой последовательности они записаны пользователем.

SQL — это декларативный язык запросов, а не универсальный ЯП. Написать программу на нем нельзя. От того люди иделают расширения вроде T-SQL или PL-SQL.

Языку же общего назначения жизненно необходимо позволять описывать последовательность действий. Или это уже не ЯП, а язык запросов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Как скрестить ужа и ежа или статическую и утиные тип
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.01.07 12:26
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>SQL — это декларативный язык запросов, а не универсальный ЯП.


Это неважно, речь шла о чистом неленивом языке.

VD>Языку же общего назначения жизненно необходимо позволять описывать последовательность действий.


Согласен.
Re[51]: динамическая абстрактная фабрика на D
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.01.07 12:58
Оценка:
Здравствуйте, FR, Вы писали:

FR>Он прав насчет ограниченности. Но другой вопрос можно ли преодолеть эту ограниченность. По моему да, но нужно добавить некторые возможности, такие как генерацию классов.


Ограниченность в возрастании сложности. Даже если один человек сможет "это", все равно — "это" будет нереально для большинства. В общем, это поять будут упражнения для мозгов, а не работа.

FR>Да интересно вы с Tonal- ругаетесь прямо дежавью какое-то Правда помню ты так же упорно отстаивал что менее выразительный C# не хуже питона


Да в том то и хохма, что Немерле оказывается в центре кучи молы. Он влез на поле слишком многих языков и технологий. И все кто привык к своему пытаются найти в нем фатальный недостаток.

FR>Кстати ван Россум тайный почитатель хаскеля и я тоже слышал что списки он оттуда содрал.


Расстрой его. Списки в Хаскеле синтаксически заимствованы из ML-подобных языков (коим и является Хаскель). А появились они в том самом легендарном дедушке Лиспе.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Как скрестить ужа и ежа или статическую и утиные тип
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.01.07 12:58
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Ты ошибаешься.

Или ты.

L>В чистом языке (как в Haskell) может не быть понятия последовательности. Функция — это функция в математическом смысле. Запись f(a,b) не определяет в каком порядке будут вычисляться аргументы.


Это никому не нужные абстракции. Ведь то что порядок не важен никак не запрещает считать, что вычисления идут слева на право и перед все аргументы вычисляются перед вызовом. Так? А раз так, то достаточно пометить участок кода каким-то образом и считать, что в нем эти соглашения обязаны соблюдаться. Все! Больше не нужно трахать мозги окружающих монадами и прочим высокохудожесвенным бредом.

VD>>Я вижу что модады были созданы исключительно для траханья мозга окружающим.

L>Нет, цели были другими.

Они явно скрывали истенные цели.

L>Ну, я же не сам эти усилия предпринимаю. За меня это делает компилятор. А я получаю следующие из этих свойств бонусы.


Бунусы останутся на месте если просто помечать код. Но при этом на месте останется крыша тех кто пользуется языком и появится скорость полноценных компилируемых языков.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[52]: динамическая абстрактная фабрика на D
От: FR  
Дата: 26.01.07 13:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>Он прав насчет ограниченности. Но другой вопрос можно ли преодолеть эту ограниченность. По моему да, но нужно добавить некторые возможности, такие как генерацию классов.


VD>Ограниченность в возрастании сложности. Даже если один человек сможет "это", все равно — "это" будет нереально для большинства. В общем, это поять будут упражнения для мозгов, а не работа.


Нет уже в D шаблоный код вполне читабелен. Но D скажем так далеко не раскрыл все возможности шаблонов. Многое упущенно. Главное генерация, другое полноценная compili-time рефлексия.

FR>>Да интересно вы с Tonal- ругаетесь прямо дежавью какое-то Правда помню ты так же упорно отстаивал что менее выразительный C# не хуже питона


VD>Да в том то и хохма, что Немерле оказывается в центре кучи молы. Он влез на поле слишком многих языков и технологий. И все кто привык к своему пытаются найти в нем фатальный недостаток.


А при чем тут немерле, мы когда впервые ругались ты о нем еще и не слышал

FR>>Кстати ван Россум тайный почитатель хаскеля и я тоже слышал что списки он оттуда содрал.


VD>Расстрой его. Списки в Хаскеле синтаксически заимствованы из ML-подобных языков (коим и является Хаскель). А появились они в том самом легендарном дедушке Лиспе.


Как я понял речь идет не вообще о списках, которые были в питоне с момента рождения, а о списковых расширениях (list comprehensions) которые и появились первыми именно в хаскеле.
Re[22]: Как скрестить ужа и ежа или статическую и утиные тип
От: deniok Россия  
Дата: 26.01.07 13:28
Оценка: 1 (1) +2
Здравствуйте, VladD2, Вы писали:

VD>Это никому не нужные абстракции. Ведь то что порядок не важен никак не запрещает считать, что вычисления идут слева на право и перед все аргументы вычисляются перед вызовом. Так? А раз так, то достаточно пометить участок кода каким-то образом и считать, что в нем эти соглашения обязаны соблюдаться. Все!


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

В Хаскелле для этих целей есть seq, который, однако, большинство рассматривает как что-то подобное goto в императивном мире.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.