| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Флейм > haskell |
| Автор: GrayCardinal 28.3.2009, 14:30 |
| сабж. Кто юзает, поделитесь впечатлением... |
| Автор: Lazin 28.3.2009, 15:02 |
| написал как-то утилиту для тестирования, впечатления хорошие |
| Автор: Void 28.3.2009, 16:02 |
| Пытаюсь использовать для своих любимых околокомпиляторных поделок. Заранее оговорюсь, что я сравниваю с прочей функциональщиной, а не с Си/Перлом/Питоном и т.д., так что стандартные аргументы за/против ФП в расчёт не берём. И ещё: говорим Haskell — подразумеваем GHC. Для практического применения больше ни один компилятор не годится. Львиная доля библиотек и программ завязана на фичи GHC. Плюсы: — Достаточно универсальное сочетание практичности и академической стройности. — Активное и компетентное community. Можно сказать, Haskell сейчас — стандартный функциональный язык. — Как следствие: библиотеки пишут и пишут много. Стандартная поставка GHC тянет на batteries, которые included, больше, чем что-либо ещё из функциональщины, не привязанной к JVM/.NET. Пишут как биндинги, так и теоретически продвинутые вещи. — К предыдущему пункту: Cabal и Hackage. Nuff said. — Компилятор(ы) активно пилят. Вся остальная функциональщина в плане улучшения нативной компиляции сдулась, хотя у OCaml ещё есть фора. Недостатки непосредственно вытекают из достоинств: Высокий порог вхождения. Математикам, наверное, проще, но лично я, будучи знакомым с OCaml, въехал в Haskell далеко не с первого захода. Но в последнее время появилось много толковой литературы, особо отмечу http://book.realworldhaskell.org/. Язык «глубокий»: фич много, разница между basic и advanced Haskell большая. Тут два аспекта: система типов и ленивость. С типами надо перейти от «методом тыка переставляем операторы, чтобы оно хотя бы скомпилировалось» к состоянию, когда система типов помогает выражать мысли. Система типов в Haskell — это альфа и омега. Чтобы успешно писать на Haskell, надо иметь желание как можно больше выразить через типы, наложить как можно больше статических ограничений. Многие такой подход органически не приемлют. Ленивость — причина стандартных жалоб «я написал программу, обрабатывающую большой файл, оно отжирает всю память и работает полчаса». Аналогично, от расстановки аннотаций строгости методом тыка надо перейти к пониманию, как происходит редукция, и при необходимость форсировать вычисления и использовать императивные возможности. Имеется некоторая свистопляска с библиотеками. Крупные вещи имеют обыкновение ломаться от major release GHC. К счастью, в основном при компиляции. Обычно фиксят быстро. |
| Автор: GrayCardinal 28.3.2009, 16:09 |
| Void, Большое спасибо за обзор |
| Автор: GrayCardinal 28.3.2009, 17:48 | ||
|
| Автор: Void 28.3.2009, 18:11 | ||||
Потому что я сам так писал первое время, и пока не очень далеко ушёл от этого
Такова участь большинства изучающих, судя по всему. Голландцы вроде работают, но последний релиз компилятора трёхлетней давности. Впрочем, я за публикациями особо не слежу, могу ошибаться по поводу их успехов. Есть информация, что в следующей версии компилятора будет фронтенд для Haskell 98 с возможностью мешать модули на Haskell и Clean. |
| Автор: NightmareZ 29.3.2009, 05:39 | ||
Я тупенький - значит все вокруг тоже. Отличная жизненная позиция |
| Автор: Lazin 29.3.2009, 08:30 | ||
|
| Автор: GrayCardinal 29.3.2009, 16:38 |
| Глянул сырцы... Чёрт ! Это жжжесть |
| Автор: Lazin 29.3.2009, 18:40 |
| сорцы чего, если не секрет? |
| Автор: ksnk 29.3.2009, 18:48 |
| Lazin, достаточно просто самплы глянуть из документации... Забавно, но синтаксис - будто придумал кто-то, кто слышал краем уха пересказ про С и Дельфи. Уже комментарии заставляют крутить у виска пальцем, не говоря уж о применении опереатора :: |
| Автор: Lazin 29.3.2009, 18:59 |
| по моему хороший синтаксис... просто он заточен под другие задачи, в паскале и си, у нас есть statement-ы, переменные ф-ии и так далее, в хаскеле этого нет, затое есть expression-ы, значения(values) и копозиция функций, вот к примеру if, в обычных ЯП это statement, код либо выполняется либо нет, в зависимости от условия, просто и понятно в хаскеле это expression, соответственно в хаскеле if возвращает значение, поэтому if не может быть без else, причем результаты выражений после if и после else должны иметь один и то-же тип в общем, язык просто другой, поэтому и его синтаксис так не похож на обычные ЯП... |
| Автор: ksnk 29.3.2009, 19:50 |
| Lazin, я не про то, хороший он или плохой, но мне комментарии {- ... -} - режут глаза, в то время как фигурные скобки в языке очень даже используются. Оператор :: уже давно и достаточно традиционно используется как выборка из объекта/структуры, а совсем не как описание типа. Зачем такие "традиционные" вещи делать "по своему"? А уж, обозначение конструкта "bottom" вызывает приступы хихиканья, вероятно, у многих знакомящихся с языком... |
| Автор: Void 29.3.2009, 20:18 | ||||||
Один из вариантов обозначения комментариев в Паскале — (* *). Ни разу не слышал, чтобы их кто-то с круглыми скобками путал...
С каких пор использование в C++ (1983) и Perl (1987) стало основанием называть что либо «традицией»? Тем более основные наследники — Java и C# — этот синтаксис не переняли? Синтаксис Haskell восходит к Miranda и Hope (начало 80-х), почему приоритет должен быть у C++?
_|_ не является синтаксической конструкцией Haskell. Это обозначение из теории типов. Не знаю, кто и когда использовал его впервые, но математикам что, на программистов оглядываться в выборе обозначений? Добавлено через 2 минуты и 57 секунд Предъявлять претензии к «не такому» синтаксису — это все равно что обвинять чешский язык в том, что некоторые слова звучат смешно для русского уха. Надо уметь переключать контексты в мозге |
| Автор: krwlr 30.3.2009, 01:50 |
| посты не читала, т.к. вы херню пишете какуюта нипанятную.. и читать мне вас лень.. |
| Автор: GrayCardinal 30.3.2009, 10:44 | ||||
Pugs'a Добавлено через 8 минут и 3 секунды
|