LINUX.ORG.RU

В макросистеме Haskell обнаружен зонд! Шок!

 , , ,


0

1

В haskell (насколько я знаю) нет макросистемы.

Её подобие есть в GHC, реализованное через сплайс AST. Это, на первый взгляд, довольно удобно: снимается целый класс ошибок, связанный с парсингом текста, проще генерировать код и т. д.

Но с другой стороны мне кажется очевидным, что это же делает макросистему defective by design. AST — часть внутренней реализации компилятора, и её невозможно стандартизировать. Поэтому template haskell навсегда останется расширением GHC, либо разработчики альтернативных компиляторов должны будут писать библиотеки-обёртки GHC AST -> *HC AST невиданной кривизны, которые не будут предоставлять всё множество альтернативных расширений. Использовать макросистему, завязанную на внутренности одного компилятора — нонсенс.

Несмотря на то, что GHC-зонд буквально на виду, есть библиотеки, даже не предоставляющие альтернативного интерфейса без TH. Ein haskell, ein compiler, ein GHC!

Вопрос: какие альтернативные макросистемы можно было бы предложить?

P. S. Ну и да, доколе в квазицитатах нельзя сплайсить имена?


haskell == GHC, GHC == haskell

Все остальные реализации давно умерли, поэтому то что ты пишешь неактуально.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Платоновская идея ЯП — это его стандарт. Haskell — это вам не какой-то экспериментальный проект пары компиляторщиков, чтобы быть только тенью на стене, которую непонятно что отбрасывает.

dmfd
() автор топика

Несмотря на то, что GHC-зонд буквально на виду, есть библиотеки, даже не предоставляющие альтернативного интерфейса без TH. Ein haskell, ein compiler, ein GHC!

Ну и всё правильно сделали. Есть передовая реализация, на неё все и ориентируются. Зато на выходе имеем хотя бы что-то работающее (happstack, yesod, acid-state, etc) вместо уберабстрактных, но малопригодных поделок.

yoghurt ★★★★★
()

Во-первых транслировать AST из одной формы в другую занятие для компилятора обыденное и сложности не представляющее. Во-вторых что-то пока не видно других компиляторов Haskell общего назначения, кроме Ghc.

KblCb ★★★★★
()
Ответ на: комментарий от yoghurt

Для плюсов есть несколько компиляторов => Следуя твоей логике мы имеем несколько уберабстракнтых, но малопригодных поделок.

x4DA ★★★★★
()

< здесь должен был кукарек про то, что макросы на самом деле нужны и что их не заменить ничем >

x4DA ★★★★★
()
Ответ на: комментарий от KblCb

Там не компилятору придётся транслировать AST из одной формы в другую, а несчастным человекам реализовывать полтора стандарта вместо одного.

dmfd
() автор топика
Ответ на: комментарий от dmfd

Стандарта чего? AST торчащий из TH очень условный. Высунуть наружу его в состоянии любой компилятор. Да разработчику любого компилятора придётся его реализовать. Это 1) не сложно 2) судьба.

KblCb ★★★★★
()

AST — часть внутренней реализации компилятора, и её невозможно стандартизировать

Импликация необоснована же.

даже не предоставляющие альтернативного интерфейса без TH

А есть и предоставляющие, вот derive вспомнился. BTW дофига непортабельных библиотек: хоть mtl взять (правда там адекватные расширение - можно их в стандарт).

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

anonymous
()
Ответ на: комментарий от x4DA

Для плюсов есть несколько компиляторов

…В равной степени развитых, среди которых сложно выделить передовой - это то самое слово, которое ты пропустил. А если и можно, то на портируемости кода это мало скажется.

yoghurt ★★★★★
()
Ответ на: комментарий от anonymous

Импликация необоснована же.

Да. "Невозможно" следовало читать как "крайне коряво и чревато проблемами".

BTW дофига непортабельных библиотек

Знаю, но на слово "макросистема" должны были лисперы сбежаться, по идее.

dmfd
() автор топика
Ответ на: комментарий от KblCb

Высунуть наружу его в состоянии любой компилятор. Да разработчику любого компилятора придётся его реализовать.

Ага, особенно это справедливо для тех компиляторов, которые написаны не на haskell.

dmfd
() автор топика
Ответ на: комментарий от dmfd

Можно подумать кому-то в здравом уме придет в голову идея писать компилятор хаскеля не на хаскеле.

anonymous
()
Ответ на: комментарий от dmfd

В чём проблема? Во-первых этот компилятор haskell на не-haskell всё равно должен предоставить пользователю base написанный на haskell. Во-вторых AST это всего лишь дерево. Ничто не мешает преобразовать его из нативной структуры языка компилятора в, прости господи, xml, а из него в GHC-шный AST и наоборот. О чём речь вообще?

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Ничто не мешает преобразовать его из нативной структуры языка компилятора в, прости господи, xml, а из него в GHC-шный AST и наоборот.

Да, людям без чувства прекрасного нагородить костылей ничто не мешает.

dmfd
() автор топика

В хаскеле никогда не будет номарльной макросистемы, потому что это негомоиконный язык со статической типизацией.

anonymous
()
Ответ на: комментарий от dmfd

Ну, это закономерный процесс. Одно время лисп и хаскелл были таким вот «матаном для посвящённых», сокровенным знанием. Потом началась популяризация: на густой аромат нонконформизма слетелись тысячи желающих быть «не-такими-как-все». Текущая ситуация такова, что на ЛОРе уже каждый школьник знает, что монада - это всего-навсего моноид в категории эндофункторов, а Рич Хикки ни черта не смыслит в гигиенических макросах.

Таким образом, лисп и хаскелл утратили элитарность. Поэтому появилась потребность в чём-то, что могло бы снова занять нишу. Этим и объясняется растущая популярность теорката и сопутствующих языков: Coq, Agda, Epigram, Omega и прочих.

anonymous
()
Ответ на: комментарий от cdshines

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

dmfd
() автор топика
Последнее исправление: dmfd (всего исправлений: 2)
Ответ на: комментарий от dmfd

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

cdshines ★★★★★
()
Ответ на: комментарий от dmfd

дальше от жизни, в квантовые вычисления

Дальше, чем ТК? В астрал, штоле? Насколько я знаю, она до сих пор остается «перспективной наукой».

cdshines ★★★★★
()
Ответ на: комментарий от cdshines

На ЛОРе в очередной раз начал распространяться густой запах «мамкиного борща». :)

DeVliegendeHollander ★★
()

С другой стороны, насколько этот GHC-AST завязан на GHC? Почему его нельзя оторвать от GHC и назвать «TH-AST»?

kost-bebix ★★
()
Ответ на: комментарий от dmfd

Платоновская идея ЯП — это его стандарт

Что если я скажу тебе, что существуют нестандартизованные языки?

buddhist ★★★★★
()
Ответ на: комментарий от cdshines

Поговорил с пастой - день прошел не зря.

Deleted
()
Ответ на: комментарий от qnikst

ваше мнение очень инетерсно, вы можете рассказать, ещё что-нибудь по этому вопросу?

Это не моем «мнение», а факт, озвученный SPJ. Но я могу, еще интересного рассказать. Например, что красота haskell - это миф. Мало того, что язык хреново пригоден для IRL, так у него нет никакой концепции, это обычный пых от функциональных языков. Куча бессмысленных ограничений, изъянов дизайна, боков (по сути одной эталонной реализаци - а других и не будет: у языка нет будущего). Если какой-то чудак говорит, что «хаскель красив» - это четкий признак отсутствия математического вкуса. В этой ситуации остается разговаривать только о вкусе устриц, в надежде, что человеку свойственен хотя бы вкус кулинарный.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

Это не моем «мнение», а факт, озвученный SPJ.

факт требует ссылки.

Мало того, что язык хреново пригоден для IRL, так у него нет никакой концепции, это обычный пых от функциональных языков.

ммм.. а может вы приведете доводы, или хотя бы причину почему я должен доверять вашему мнению.

Куча бессмысленных ограничений, изъянов дизайна, боков (по сути одной эталонной реализаци - а других и не будет: у языка нет будущего).

примеры.

Конкретику, пожалуйста.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

Это не моем «мнение», а факт, озвученный SPJ.

факт требует ссылки.

Кодеры за работой почитай.

ммм.. а может вы приведете доводы, или хотя бы причину почему я должен доверять вашему мнению.

Не в этот раз, как-нибудь соберусь с духом - накатаю отдельный большой пост.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

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

qnikst ★★★★★
()
Ответ на: комментарий от alienclaster

четкий признак отсутствия математического вкуса

??? Типа если нравятся аппликативные функторы - то петух сельский?

anonymous
()
Ответ на: комментарий от alienclaster

А ты знаешь, для меня очень большим открытием было узнать о такой штуке, как recursive do-notation (тут большое спасибо одному человеку по имени Евгений). Она делает многие представления обывателей от программирования о хаскеле иногда такими смешными :)

{-# LANGUAGE RecursiveDo #-}

main =
  mdo a <- return c
      b <- return 2
      c <- return $ b + 1
      print [a, b, c]
dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.