_>Как это какое? Это как раз основное преимущество Пролога в этой области. Без этого сопоставление с образцом является только синтаксическим сахаром к if/else лестнице. А с ним получается мощнейший инструмент. Ну на самом деле это просто у меня были завышенные ожидания к Хаскелю, что типа там собрали всё лучшее и если уж есть сопоставления с образцом, то "максимальное, прологовское". )
Здравствуйте, Курилка, Вы писали:
А>> Не надо каку с конфеткой сравнивать. У вас, похоже, весьма слабые представления о том, что такое DSL.
К>А есть какие-то внятные варианты таких DSL, но чтоб не были прибиты к MS (XAML) или Firefox (XUL) ?
Здравствуйте, dsorokin, Вы писали:
D>Здравствуйте, alex_public, Вы писали:
_>>Эээ, Lisp — это тоже анти Хаскель? )))
D>Лиспы вполне себе функциональные.
Лисп имеет некоторые функциональные возможности. Но называть его "функциональным языком" — сильное преувеличение. Лисп ни в коей мере не способствует написанию программ в функциональном стиле.
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, vshabanov, Вы писали:
V>>А в хаскелле над этим думать не надо (если только в некоторых местах, где может быть переполнение ленивых thunk-ов, но со временем просто перестаешь писать код, где это возможно)
_>О, кстати, вспомнил ещё про yield в Питоне — тоже интересное решение для ленивости, в императивном стиле можно сказать. )))
Ну что уж поделать, коли генераторы через классы офигеешь писать.
V>>Поскольку IO a -- это именно действие (и, между прочим, чистая ф-я), то их можно комбинировать также как и все остальные выражения. Т.е. можно сделать несколько таких спискок-print-ов и сливать их, можно сделать take/drop, да что угодно. Т.е. уровень работы с программой совершенно другой.
_>Это уже к метапрограммированию ближе получается...
К метапрограммированию это не относится, т.к. никакой код не генерится. Но в целом появляется больше способов оперировать с действиями, по сравнению с обычным вызовом ф-ии
V>>Т.е. все эти "нечистые" монадные вычисления, на самом деле чистые, и по сути: V>>do a <- b; c V>>более простой способ записать V>>\ w0 -> let (a, w1) = b w0 in c w1
_>Всё же синтаксис для этой "императивной" части мне не кажется удобным.
Тут уж дело вкуса. Многим, например, нравится f(x,y,z), но не нравится f x y z.
V>>Про C++ сразу же вспоминается, почему Торвальдс не использовал C++ для Git (где-то был еще более развернутый ответ, чем по сслыке).
_>Хы, его отношение к C++ давно известно, так что тут это не совсем аргумент. ) А вот если посмотреть на чём написаны apache, nginx, lighttpd... Или те же самые виртуальные машины сами...
V>Я про то, что писать сборочные скрипты на хаскеле в scons не получится.
Странно что еще не написали сборочную систему на хаскеле, или уже?
V>А собирать хаскелл scons-ом -- это сильно, конечно. Две строчки в Makefile заменить на целую систему сборки.
make не сборочная система?
Две строчки будут в make только для "hello world".
Для кроссплатформенных или когда нужна многовариантная сборка scons или аналоги существенно проще чем маке.
Здравствуйте, Klapaucius, Вы писали:
K>Scheme — не лисп. Ну, или, если считать, что Scheme — лисп, то тогда Common Lisp — не лисп. Тут, знаете, как с римскими папами и антипапами ситуация. Они бы и жгли друг друга на кострах с удовольствием, да боятся, что огонь на бороду перекинется.
Откуда такое мнение? Оба являются равноправными диалектами Лиспа, хоть и сильно отличаются друг от друга.
K>Haskell — не ML семейство. Scala в него и то больше смысла записать. K>ML семейство и Scheme — это функциональные, императивные языки. Haskell функциональный и декларативный. В принципе, любой язык, в котором функции первоклассны — функциональный и таких ФЯ-инвалидов довольно много.
Мне больше нравятся критерии, озвученные в SICP: нормальный порядок вычислений и декомпозиция на потоки. Т.о. к (чисто) функциональным языкам можно отнести Miranda, Clean и Haskell например.
Здравствуйте, Klapaucius, Вы писали:
_>>Тогда значит только OCaml у нас получается "самый самый"?
K>К сожалению, не получается.
Ну да, в общем то не получается. Иначе бы мы давно на нём сидели, а не на C++. Но не получается совсем не по причинам охвата малого количества парадигм. )
_>> И в ФЯ не инвалид и всё остальное есть?
K>Что остальное?
Остальные парадигмы. Хотя логической конечно нет, но она вроде как реально только в Прологе и есть.
Ааа git тоже на C? ))) Я почему то подумал что там отказались от C++ в пользую чего-то динамического. Типа как Mercurial на Питоне работает. Ну это я тогда считаю аргументом в мою же пользу (аргументы товарища Торвальдса о другом) — код на C и C++ в целом обычно одинаково работает по скорости. Даже иногда С++ бывает быстрее за счёт инлайнов постоянных. Но это естественно в нормальных руках.
Хотя C++ тут уже оффтопик по сути.
Вообще лично мне пока только один язык приглянулся (из тех, что я рассматривал для фана) как потенциальная замена текущих инструментов. Это D. Но с ним свои проблемы с библиотеками, компиляторами и т.д. Так что это всё в далёком будущем, если вообще случится. Ещё были варианты с OCaml и Haskell, но это было пока не попробовал их непосредственно...
Здравствуйте, vshabanov, Вы писали:
V>А собирать хаскелл scons-ом -- это сильно, конечно. Две строчки в Makefile заменить на целую систему сборки.
Ну как бы там на языке этой сборки файл проекта и получется из двух строчек. Только он при этом умеет заметно больше make файла. Кроссплатоформенность, отслеживание изменение, отслеживание зависимостей и т.д..
Здравствуйте, Курилка, Вы писали:
FR>>Странно что еще не написали сборочную систему на хаскеле, или уже?
К>написали, конечно
Xa. Я порадовался (может хоть здесь применение найдётся, вдруг чем-то удобнее scons'a будет да и вообще всё же статически типизированые языки больше люблю) и полез смотреть сразу. В описание порекомендовали видео глянуть... Это http://vimeo.com/15465133. А там какая-то странная личность первым же слайдом вывела на экран "мегамонаду". Ну да, Хаскель, такой Хаскель... )))
Re[11]: Мифический Haskell
От:
Аноним
Дата:
17.02.12 16:11
Оценка:
Здравствуйте, alex_public, Вы писали:
FR>>>Странно что еще не написали сборочную систему на хаскеле, или уже?
К>>написали, конечно
_>Xa. Я порадовался (может хоть здесь применение найдётся, вдруг чем-то удобнее scons'a будет да и вообще всё же статически типизированые языки больше люблю) и полез смотреть сразу. В описание порекомендовали видео глянуть... Это http://vimeo.com/15465133. А там какая-то странная личность первым же слайдом вывела на экран "мегамонаду". Ну да, Хаскель, такой Хаскель... )))
Да я вроде уже писал про всё это в теме выше. Сейчас просто уже как шутка скорее. )))
А вообще я обозвал мегамонадами случаи, когда вся программа состоит только из одной монады (main соответственно) и всё. Т.е. никакого "нормального" код рядом.
Да, а в данном случае вообще странно. Я ожидал увидеть в начале презентации системы сборки что-то типа такого http://www.scons.org/doc/production/HTML/scons-user/c258.html — нормальный пример достигаемого эффекта. А то что вылезло там на экран первым делом (после приветствия)... Даже слов нет...
А в Хаскелле они в свою очередь позаимствованы из Miranda.
А в Miranda из KRC.
А в KRC из SASL.
А в SASL из SETL.
А в SETL из Соломона.
А в Соломоне из Давида царя
А в Давиде царя из Иессея.
А в Иессее из Овида
А в Овиде из Вооза от Рахавы
А в Воозе из Салмона
А в Салмоне из Наассона
А в Наассоне из Аминадава
А в Аминадаве из Арама
А в Араме из Есрома
А в Есроме из Фареса
А в Фаресе из Иуды братьев его.
А в Иуде из Иакова.
А в Иакове из Исаака.
А в Исааке из Авраама.