metaclass: (Default)
[personal profile] metaclass
и бухгалтерия выкушают мой моск.

Кто-нибудь знает:
1) Что и в каком порядке изучать, чтобы написать интерпретатор Хаскеля?
2) Где взять готовый встраиваемый интерпретатор?

:)

Date: 2009-04-10 07:04 pm (UTC)
From: [identity profile] kong-en-ge.livejournal.com
Ребе, может быть, все-таки стена ритуальных самоубийств будет более предпочтительна?

Date: 2009-04-10 07:13 pm (UTC)
From: [identity profile] theiced.livejournal.com
Вы таки боитесь что будет написано ещё большее говно чем ситиинфа? Зря, зря. Она в этом плане совершенна.

Date: 2009-04-10 07:30 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я как-то пытался размышлять на тему "как описать на хаскеле GIS-алгоритмы". Пришел к выводу, что такие размышления надо оставить до лучших времен :)

Date: 2009-04-10 07:53 pm (UTC)
From: [identity profile] mibori.livejournal.com
А в чем специфичность?

Date: 2009-04-10 08:04 pm (UTC)
From: [identity profile] metaclass.livejournal.com
У меня от мысли о функции, у которой на входе список объектов, каждый из которых список координат и код классфикатора, список классификатора, и координаты отображаемого прямоугольника на экране и на земле, а на выходе - картинка, и ее разложении на более простые функции начинает идти дым из ушей :)
А уж если вспоминать про оптимизацию, то вообще крышей поехать можно. Я периодически пытаюсь представить себе, как можно было бы оформить БД и запросы к ней (R-tree для оптимизации пространственных запросов это частный случай такого) на хаскеле таким образом, чтобы их оптимизацией занимался движок, на основе предыдущих запросов и информации о типе.

Date: 2009-04-10 08:18 pm (UTC)
From: [identity profile] mibori.livejournal.com
У меня от мысли о функции, у которой на входе список объектов, каждый из которых список коо...
Тут больше newtype нужно, имхо.

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

Date: 2009-04-10 08:29 pm (UTC)
From: [identity profile] metaclass.livejournal.com
В БД и пространственных запросах, конечно, можно обойтись без оптимизации, поначалу все будет работать и так. Но в реальных условиях (миллионы объектов) пользоваться можно, только если время работы O(log N) а не O(N), так что всякие там индексы на разнообразного рода деревьях нужно считать входящими в условие задачи и поддерживать их должен используемый инструмент.
Вот та же реляционная теория - она придумывалась именно как средство разделить физическую структуру данных и их логическую структуру. Но, тем не менее, до сих пор при проектировании БД приходится учитывать потенциальные способы доступа к данным и подгонять индексы, а иногда и поступаться нормализацией, ради скорости работы.

Date: 2009-04-10 08:42 pm (UTC)
From: [identity profile] mibori.livejournal.com
Да прибудет с вами Окасаки...

Date: 2009-04-10 08:47 pm (UTC)
From: [identity profile] metaclass.livejournal.com
О, точно, я же в эту книжку еще не заглядывал.

Date: 2009-04-10 09:33 pm (UTC)
From: [identity profile] kong-en-ge.livejournal.com
Вижу, ребе, вам чужие успехи по-прежнему мешают спать. Попробуйте завести подружку-кютэшницу.

Date: 2009-04-10 09:49 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Подружку-анимешницу, знающую хаскель.
"Месье знает толк в извращениях!"

Date: 2009-04-11 12:30 am (UTC)
From: [identity profile] theiced.livejournal.com
Я как нить проживу без сомнительного звания `Афтар самого уёбищного УИ`, спасибо.

Date: 2009-04-11 08:09 am (UTC)
From: [identity profile] kong-en-ge.livejournal.com
бгаго, не перестаете доставлять!

Date: 2009-04-10 07:09 pm (UTC)
From: [identity profile] inhate.livejournal.com
Даешь /lib/modules/`uname -r`/haskell.ko !

Date: 2009-04-10 07:11 pm (UTC)
From: [identity profile] thesz.livejournal.com
1) Хаскельный код вызывается через FFI.
2) http://haskell.org/haskellwiki/Ghc_as_a_library

Вот. ;)

Date: 2009-04-10 07:29 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Ужосъ :)
На самом деле, я как раз хочу избежать FFI и реализовать взаимодействие с БД и еще кой-какими внутренностями внешней программы так, как будто это родной модуль хаскеля, в крайнем случае, завернув его в монаду, аналогичную IO.

Тут в натуре министерство по налогам и сборам вместе с бухгалтерами сошло с ума и требует ведомости, для которых есть три варианта реализации:
1) написать вручную алгоритм, который будет грузить первичные данные из БД, их обрабатывать совершенно необъяснимым образом и потом вручную собирать выходную печатную форму. тысячи строк несамоочевидного кода
2) факторизовать код на выполняемый частично в SQL, частично в обычном языке, частично в скриптах печатной формы. Это сейчас оно реализовано так. Объяснить нормальному человеку, как ЭТО работает, будет очень сложно.
3) Прикрутить к этому Haskell-based DSL, который бы все, от загрузки из БД до генерации печатной формы делал сам. Очень сложно сначала, зато было бы гораздо проще потом и на веки вечные.

Date: 2009-04-10 07:58 pm (UTC)
From: [identity profile] mibori.livejournal.com
FFI -- нормальная практика. Загляните в исходники стандартных win32-библиотек поставляемых с GHC.

Date: 2009-04-10 07:58 pm (UTC)
From: [identity profile] thesz.livejournal.com
Так Хаскельные DLL можно делать.

Ты опиши поточней, что тебе надо, попробуем.

Date: 2009-04-10 08:17 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Тут именно проблема класса: "алгоритм на хаскеле - 10 строк, загрузка данных из БД через FFI или там HDBC - 1000 строк". Если делать вручную описание структур данных и загрузку их из БД, смысл хаскеля очень сильно теряется, в то время, как моя шиза мне подсказывает, что автоматический вывод структур данных исходя из структуры БД сразу решит множество проблем.

Вкратце, идея такая: неким образом при компиляции подгружается схема БД(и, возможно, предопределенный набор запросов к ней) и из нее генерируется модуль, экспортирующий содержимое этой БД в совместимом с хаскелем виде. Т.е. таблица представляется в виде списка, а поскольку списки у нас ленивые - мы получаем обычную итерационную обработку таблицы. Запросы представляются в виде функций от параметров запроса тоже к спискам.
Сейчас из похожего я видел только HaskellDB, который для работы генерирует такой модуль своей какой-то утилитой, и вроде работает только через ODBC.

Затем мы это дело обрабатываем как нам в голову взбредет, обычным хаскелевым кодом, получаем некие выходные данные.

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

Такое реализовать, насколько я себе представляю, достаточно сложно, поэтому я уже давно над этим думаю, но к реализации приступить не хватает мозга и времени.

Date: 2009-04-12 10:55 am (UTC)
From: [identity profile] tonal.myopenid.com (from livejournal.com)
HaskellDB вроде может работать поверх HDBC.
Хотя мне кажется, было бы круто иметь EDSL с синтаксисом SQL поверх HDBC.
Т.е. пишешь обычный SQL запрос, который возвращает ленивый список кртежей...

Date: 2009-04-12 05:04 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Вот вроде HaskellDB так и работает. У него утилита генерит файл, оборачивающий базу данных в модуль, и затем поверх этого выполняются SQL-подобные запросы.

Date: 2009-04-13 02:50 pm (UTC)
From: [identity profile] tonal.myopenid.com (from livejournal.com)
Всегда хочется лучшего. :)
HaskellDB так же как и SQL основан на реляционной алгебре, но таки не sql.
Поэтому, какими-нибудь расширениями SQL для конкретного сервера не воспользуешься, а в случае SQL-EDSL всегда можно сделать бакенд максимально близким к конкретному диалекту.

Ну и планка входа в случае SQL-я существенно ниже - документации горы, в отличии от...

Date: 2009-04-10 09:26 pm (UTC)
From: [identity profile] ex-network-.livejournal.com
Думаю, советовать С и реализацию "в лоб" бессмысленно:)
*шутка есичо*

Date: 2009-04-11 04:10 am (UTC)
From: (Anonymous)
Никак. Такого нет и нескоро будет, я тоже как-то на тему встраиваемого хаскеля заморачивался. А писать свой интерпретатор - это адъ

--
xaep

Date: 2009-04-11 08:40 am (UTC)
From: [identity profile] theiced.livejournal.com
Поэтому надо встраивать не хаскели а руби :)

Date: 2009-04-11 08:41 am (UTC)
From: [identity profile] theiced.livejournal.com
Ну или лисп, да/

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 31st, 2025 10:12 pm
Powered by Dreamwidth Studios