LINUX.ORG.RU

Haskell 2010

 , haskell 2010, haskell-prime,


0

0

В списке рассылки появилось сообщение от Simon Marlow, где объявляется о новой ревизии языка Haskell — Haskell 2010.

Расширения, которые вошли в новый стандарт:

  • DoAndIfThenElse
    Синтаксис if-then-else будет выглядеть как «exp -> if exp1 [;] then exp2 [;] else exp3».
    «then» и «else» можно будет располагать на одном уровне.
  • HierarchicalModules
    Иерархическая структура модулей наконец-то войдёт в официальный стандарт.
  • EmptyDataDeclarations
    Конструкторы типов без конструкторов данных (это типы с единственным значением: _|_).
  • FixityResolution
    Изменения в синтаксическом разборе операторов с приоритетами. Важно только для официального отчёта.
  • ForeignFunctionInterface
    Давно использующийся FFI тоже войдёт в Haskell2010.
  • LineCommentSyntax
    Небольшое исправление, связанное со строчными комментариями.
  • PatternGuards
    Сопоставление с образцами в охраняющих выражениях.
  • RelaxedDependencyAnalysis
    Ослабленный анализ зависимостей: при выводе типов игнорируются ссылки на связанные переменные с явно указанными типами. Monomorphism restriction is gone.
  • LanguagePragma
    В отчёте будет упоминаться прагма «LANGUAGE» с расширениями: DoAndIfThenElse, HierarchicalModules, FixityResolution, PatternGuards, NoNPlusKPatterns, RelaxedDependencyAnalysis, LineCommentSyntax, EmptyDataDeclarations, LanguagePragma и ForeignFunctionInterface.
    Реализация, поддерживающая прагмы, должна обрабатывать «{-# LANGUAGE Haskell2010 -#}» (включает все вышеперечисленые расширения).
  • NoNPlusKPatterns
    Убран вариант синтаксиса при сопоставлении с образцом вида «n + k» для натуральных чисел.

Подробнее обо всех расширениях можно узнать здесь:
http://hackage.haskell.org/trac/haske...

>>> Сообщение в списке рассылки

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

>я на днях видел код одного очень популярного и платного CMS на пхп

они наличие переменной проверяют по strlen

Это они, безусловно, зря.

используются такие прекрасные выражения как $a <> $b

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

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

> Просто он теоретик — высшая каста, тебе за ним не угнаться — весь в полёте мысли.

Это по образованию. Но я - практикующий программист. Если немного смекалки, то можно даже узнать о результатах ;) Но лучше вернемся к хаскелю.

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

Смерть еретикам и нечестивцам!

Все должны веровать в C++! Кто не верует в C++ и поклоняется ереси, всех на священный костёр!

anonymous
()

Где Проффессор? А то я ничего не понял.

Кроме того, что один сплошной мелкософт в ownerах.

Причем тут GNU/Linux?

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

Нету никакой разницы. Одна обрабатывает мозг программерам, другая — ламерам. А так — всё одна хрень.

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

> Нету никакой разницы. Одна обрабатывает мозг программерам, другая — ламерам. А так — всё одна хрень.

Причем деньги получают из одного кармана.

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

То-то в haskell-cafe вечно жалуются, что под виндою что-то не работает. Никаких жалоб от линуксоводов не видно..

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

> А решается это тем, что и random() и time() должны возвращать не конкретные вычисленные значения, а сами вычисления (computations), которые обычно представляются в виде функций, генерируемых компилятором на основе программы (нотация do). Затем, чтобы получить реальные значения мы просто вызываем уже эти новые функции (через runXXX), передавая нужные параметры. Или передаем сами функции как параметры другим внешним функциям (через liftIO). В общем, приходим к монадам, выражая побочный эффект с помощью только чистых функций! В этом есть какая-то завораживающая магия :)

Сильно на какой-то костыль похоже.

anonimus_nax
()
Ответ на: комментарий от jtootf

нет. seed взводит генератор, к возвращаемому значению прямого отношения не имеет: само значение всё равно надо брать из IO

Вообще говоря нет. Все генераторы псевдослучайных чисел чистые функции, только стартовое значение необходимо брать из IO. Советую посмотреть на сигнатуры фукций в System.Random

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

>> Учите C + Python = нещебродство и безработность

fixed

Перестань прогуливать уроки русского языка.

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

> Вообще говоря нет. Все генераторы псевдослучайных чисел чистые функции, только стартовое значение необходимо брать из IO. Советую посмотреть на сигнатуры фукций в System.Random

Помнится в чипсете i810 был хардварный генератор, что-то на основе диода с тепловым шумом вроде бы. Оно там такое рожало, что любители вихрей мерсена кусали локти.

shutty
()
Ответ на: комментарий от tailgunner

Ну не совсем. Не резёрч стрижет бабки с ламеров и подсыпает в кормушки резёрчу.

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

> только больной человек мог придумать синтаксис в котором пробелы имеют значение!

+1024.

Питонисты и Fшарпщики нервно грызут ногти. :)
Особенно радует, как они будут копипэйстить код со страничек, сделанных идиотами-дизайнерами (пропорциональным шрифтом, да ещё браузер выест все пробелы). Воистину, когда плохому прогеру нечего делать, он языки выдумывает.

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

>>> только больной человек мог придумать синтаксис в котором пробелы имеют значение!

ты про Python?

Питон и хацкель одного поля ягоды

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

> Хаскель разрабатывается в MS Research, по большей части, насколько я знаю.

понятно теперь почему он такой вывихнутый

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

>> А решается это тем, что ...

Сильно на какой-то костыль похоже.

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

Здесь интересен F#. В нем можно сочетать функциональное программирование с более низко-уровневым императивным типа ОО. Например, можно создавать чистые функции, которые изнутри вполне могут быть императивными и юзать те же объекты.

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

Но как всегда, ничто не совершенно. У любого подхода есть свои изъяны.

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

> Особенно радует, как они будут копипэйстить код со страничек, сделанных идиотами-дизайнерами (пропорциональным шрифтом, да ещё браузер выест все пробелы)

Вот так и палится школота.

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

Не равняйте Хаскель с Питоном. На Питоне написано много полезного софта. Разрабатывать просто и удобно. И пробелы там очень удачно прикручены: если вы пишете в хорошем стиле и делаете отступы, то зачем вам тратиь две строчки на {}? А если нет, то будете писать — никуда не дженетесь.

Хаскель создан, чтобы вывихивать мозг и писать на нём диссертации. Толку от него никакого.

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

Я не знаю Haskell, но из этой дискуссии у меня складывается впечатление, что результатом выполнения аналога

(defun make-random-generator (seed)
  (lambda ()
    (setf seed (get-next-random-value seed))))

будет нечистая функция. Если это так, как вы вообще с замыканиями работаете? Можно пример аналогичного кода + его использование?

anonymous
()

первый результат по запросу хаскель в гугле — haskell indian nations university.

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

> Толку от него никакого.

Позвольте-позвольте!!! Не надо грязи в чистый огород Хаскеля!!! На нём уже написан файловый менеджер с применением GTK2HS. Я не знаю какой урод прикрутил к GTK Haskel, но факт остаётся фактом. Кстати, во флеме GTK/GNOME vs. Qt/KDE это будет плюсом GTK/GNOME. К ним даже хаскель можно привернуть...

На само тельце сего «первого в мире чисто академического и истинно чисто-функционального файлового менеджера» (читате на «уё*ще») можно полюбоваться здесь -> http://www.mickinator.com/wordpress/?cat=5

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

>Я не знаю какой урод прикрутил к GTK Haskel А что не устраивает в Gtk2Hs? Всё нетипизированное уродство Пел запрятано в красивую систему типов, в которой сегфолта не добьёшься даже при большом желании.

Mihai-gr
()
Ответ на: комментарий от sv75

Ну и что? Я вообще не хочу вести дискуссию про «открыто»-«закрыто»-«бесплатно»-«за деньги». Описание языка опубликовано. Почувствуйте разник между пропиетарным языком и пропиетарной реализацией.

Среда разработки для миранды тоже была пропиетарна на момент написания известной книги Филда и Харрисона. И что? Это помешало им книгу написать?

Существует куча языков, которые самые разные компании придумывают для своих нужд. Мне вон довелось писать на специализированном языке сценариев для контроллера сети банкоматов. Вот этот язык был вполне пропиетарным.

gns ★★★★★
()

Я один не вижу в топике никакой конструктивности? Обсудили хотя бы лямбда-счисление, категорию Hask, ну или на худой конец представление IO в виде ленивой функции (String -> String).

Эх, раньше флейм про ФП был куда интереснее. И трава была зеленее, и небо голубее.

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

Нуу.. Этожд дУУмать надо... Филда-Хариссона курить и прочего Барендрегта... :))

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

Ну и что что главные разработчики GHC в MS Research Cambridge работают? Зато главный коммерческий юзер Хаскелля — Galois, насколько я знаю, Linux очень любит. И поддержка shared libraries в GHC в первую очередь под Linux появилась.

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

> чёрт меня возьми, пусть M$ поскорее выпустит H#! да я им доплачу за это! :)

SPJ против.

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

> Многострочные лямбы не нужны и заменяются nested-функциями.

Это как сказать «замыкания в Java заменяются анонимными классами». Заменяются то они заменяются, только выглядит это ублюдочно.

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

> На самом деле он перехватывал переполнение стека и перезапускал по новой. ))

В Scala, по-моему, что-то такое же замутили.

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

> Эх, раньше флейм про ФП был куда интереснее. И трава была зеленее, и небо голубее.

Умные оппоненты уже прониклись Хаскеллом, остались не продвинувшееся дальше синтаксиса имбицилы. С такими конструктивного флейма не получится.

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

Если из толкового софта на языке за 20 лет смогли сварганить 1 файловый менеджер, то он поистине крут.

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

Vudod ★★★★★
()

Мне Haskell не понравился необходимостью создания шедевров вида
zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]
zip4 :: [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]
zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]
zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]
zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]
Все-таки статическая типизация ограничивает возможность обобщенного программирования (если это не так пусть теоретики Лора меня поправят).
У ленивости и чистых функций тоже есть преимущества и недостатки, однозначно хорош в Haskell только карринг «из коробки».
Сейчас понемногу изучаю Схему, после нее синтаксис Haskell кажется хуже из-за наличия избыточного на мой взгляд сахара (например ".",«$»).
Особенно бесит префиксный и инфиксный синтаксисы вызова функции, которые автор кода расставляет в зависимости от настроения.

capricorn20
()
Ответ на: комментарий от gns

насколько я понимаю, эти дармоеды приносят им много пользы :-)

поищи информацию на то, кто занимается в MS верификацией софта и т.п. вещами, новыми пользовательскими интерфейсами и т.п.

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

>А Haskell разрабатывается во многом Microsoft Research, причём под GPL и для линукса. Странно, но факт.

Это идеологическая диверсия. Ъ-нерды уже давно говорят о том, что «линакс скатился с с.г. и опопсел», все больше людей уходит в дебри хаскелля и спивается.

Sun-ch
()
Ответ на: комментарий от capricorn20

> Мне Haskell не понравился необходимостью создания шедевров вида

Нет такой необходимости. Если вдруг понадобились подобные шедевры, то скорее всего что-то не так с подходом к решению проблемы. В большинстве случаев подобные вещи стоит заменить либо fold'ами, либо array'ями.

Если уж такая жуть и в правду понадобилась(во что я не верю), то смотрим сюда, обязательно прочитывая хотя бы первые 5 страниц: http://www.haskell.org/th/papers/meta-haskell.ps

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

> Мне Haskell не понравился необходимостью создания шедевров вида

Сколько раз в своей жизни ты использовал zipN, N > 3?

Сейчас понемногу изучаю Схему, после нее синтаксис Haskell кажется хуже из-за наличия избыточного на мой взгляд сахара (например ".",«$»).

Особенно бесит префиксный и инфиксный синтаксисы вызова функции, которые автор кода расставляет в зависимости от настроения.

Одно и то же можно записать несколькими способами, чтобы можно было выбрать самый читабельный вариант.

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

>только больной человек мог придумать синтаксис в котором пробелы имеют значение!

+стопиццот

keeper-andrew
()
Ответ на: комментарий от Vudod

>А то учат студентов на мехматах этому хаскелю, я потом ему говоришь: считай файл в три столбца в двумерный массив, а он 2 недели пыжится и пшик.

Это недоработка преподавателя. Начинать надо было с простых и понятных примеров, а не залезать сразу в абстрактные дебри.

Sun-ch
()
Ответ на: комментарий от jcd

>Имеет ли смысл сейчас изучать этот язык? И если да - для каких целей он в основном используется?

Просто обязательно, если ты хочешь стать программистом с большой буквы «П», а не просто кодить чужие алгоритмы. Его фишки - квинтенсенция всех успешных идей в программировании, за последние 20 лет в одном флаконе. А что касается сложности, тут самому надо поставить ограничитель, на какой уровень рыть. Скажем, зачем инженеру-электрику энание электродинамики на уровне университетского курса? Для решения практических задач этого ему не нужно.

Sun-ch
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.