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...

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

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

Ты клонишь к тому, что функциональным ассемблером можно сделать больше хирургических операций, чем хаскелем? ОК, пусть будет так. И чего?

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

Многострочные лямбды выглядят не менее ублюдочно, кроме того сложновато будет сделать рекурсивную лямбду (хотя и не нужно в принципе).

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

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

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

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

Только это ни разу не tail-recursion optimization. Хороший оптимизатор хвостовую рекурсию в цикл разворачивает, и она идет практически без оверхеда.

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

>В Scala, по-моему, что-то такое же замутили. Только это ни разу не tail-recursion optimization. Хороший оптимизатор хвостовую рекурсию в цикл разворачивает, и она идет практически без оверхеда.

Это ограничение накладываемое JVM. То же в Clojure, а жаль.

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

Так вот лучше бы вместо «поржать» взяли бы да и почитали HSoE или RWH, было бы куда больше пользы и себе, и окружающим. Ну, вы, конечно, вольны делать что хотите, но всё-таки...

Прошу меня простить, но я половину последнего отпуска на это убил. Больше тратить время столь же бесполезно не желаю. В моих ущербных говно-задачах пользоваться Хаскелем, это как на нём же клиент работающий через socks4a писать. Может, и можно, но явно не нужно. В остальном использование Java и, изредка С++, решает все мои проблемы полностью.

Впрочем, пойду-ка я делать уроки, пока Питекантроп не вернулся... :)))

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

А в дотнете ЕМНИП даже специальная директива есть на хвостовую рекурсию. Только конпелятор Сешарпа ее не использует при кодогенерации. Зато другие языки с удовольствием.

Кто-то будет еще говорить, что явавм круче дотнета?

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

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

ХОТЕТ!!!!111адынадын

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

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

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

> Надо еще привести пример про статически типированную Аду когда самолет летел на высоте 0 метров над уровнем моря (над Мертвым морем, Израиль) и программа написанная на самой такой строгой Аде поделилась на ноль.

Этот баян буде вечным :D Конечно, в Лиспе деления не 0 не бывает.

Или про Фобос-1 потерянный из-за того что переменная на Фортране имела неправильный статический тип.

так, ссылку на причину гибели Фобоса - в студию.

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

Интересно, где вообще понадобилось на высоту делить. Сколько ПО для самолетов не видел и не писал, ни разу еще на высоту не делилось. Подозрительно все это.

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

>Многострочные лямбды выглядят не менее ублюдочно, кроме того сложновато будет сделать рекурсивную лямбду (хотя и не нужно в принципе).

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

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

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

Саныч клонит к тому, что скоро вечер. А это - единственный худо-бедно живой тред на лоре. Естественно, Саныч раскидал тут наживки на полтреда, и скоро из под неё уже рыбы будет не видно.

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

> А в дотнете ЕМНИП даже специальная директива есть на хвостовую рекурсию.

Кто-то будет еще говорить, что явавм круче дотнета?

Школота учит новые термины? %) http://morepypy.blogspot.com/2009/10/first-pypy-cli-jit-benchmarks.html

<Ъ> tail calls are ~10x slower than normal calls on CLR, while being only ~2x slower than normal calls on mono. </Ъ>

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

> Интересно, где вообще понадобилось на высоту делить.

Ну ты прям как никогда и нигде не работал. Если что-то пошло не так до такой степени, что руководству будут мылить шею, то значит всё дело было в чём? Пра-а-а-а-а-авильно. Именно в них! Они самые. Один хрен, никто не понимает до конца, как они все работают.

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

>в Лиспе деления не 0 не бывает.

В лиспе перечень мер которые можно там сделать был бы пошире. Но к банальным переполнениям лисп устойчив, например.

Или про Фобос-1 потерянный из-за того что переменная на Фортране имела неправильный статический тип.

так, ссылку на причину гибели Фобоса - в студию.

Ссылки не будет - про это еще кто-то в ФИДО рассказывал. Программа была на Фортране и кто-то там integer вместо float-а поюзал.

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

>>в Лиспе деления не 0 не бывает.

В лиспе перечень мер которые можно там сделать был бы пошире

Доо. Теоретически - может быть. А так, исключение по делению на 0 есть и в Аде.

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

Доо. Когда 32-бит целое число вдруг становится big decimal, и программа начинает тормозить в разы, а JIT лихорадочно перекомпилирует всё подряд? Почитай хоть, для чего предназначена Ада.

так, ссылку на причину гибели Фобоса - в студию.

Ссылки не будет - про это еще кто-то в ФИДО рассказывал. Программа была на Фортране и кто-то там integer вместо float-а поюзал.

Ты слышал звон, но не знаешь, где он. Из-за ошибки в Фортран-программе гробанулась какая-то американская автоматическая станция для исследования Венеры в 60-х - ЕМНИП, там была ошибка в цикле DO (описано в «Структурное проектирование и конструирование программ» Йодана). Так что твой пример нерелевантен уже лет 30.

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

Еще про Си++ осталось что-нибудь эдакое сказать :)

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

странно тогда что никто не сделал.

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

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

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

от побочных эффектов во внешней либе как защититься?

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

> Ссылки не будет - про это еще кто-то в ФИДО рассказывал. Программа была на Фортране и кто-то там integer вместо float-а поюзал.

Пардон, а это, часом, не с французской «Ариан-5» (номер не помню точно) было? При старте откуда-то с экватора... У неё точно на борту спутники были...

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

>> Ссылки не будет - про это еще кто-то в ФИДО рассказывал. Программа была на Фортране и кто-то там integer вместо float-а поюзал.

Пардон, а это, часом, не с французской «Ариан-5» (номер не помню точно) было? При старте откуда-то с экватора... У неё точно на борту спутники были...

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

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

>> Ссылки не будет - про это еще кто-то в ФИДО рассказывал. Программа была на Фортране и кто-то там integer вместо float-а поюзал.

Пардон, а это, часом, не с французской «Ариан-5» (номер не помню точно) было?

Ариан-5 гробанулся из-за необработанного исключения по переполнению 16-бит целого (кусок кода взяли из ПО Ариан-4 и не проверили). В отличие от Фобоса, это не байка, а реальный факт.

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

> В отличие от Фобоса, это не байка, а реальный факт.

Да я нарыл уже. Про «Маринер-1» и «Атлас».

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

> от побочных эффектов во внешней либе как защититься?

Заворачиваешь в монаду.

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

плохо то что все плюсы функциональности идут лесом, если либа вдруг себя ведет неправильно

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

от побочных эффектов во внешней либе как защититься?

каких, например? можно use-case с проблемой?

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

> бгг, единственная программа на хаскеле таки оказалась пионерской поделкой.. ччерт..

Лично я про существование этой программы узнал в этом топике.

Хаскелл стал набирать популярность в последние несколько лет. До недавнего времени было не так много библиотек, поэтому написать что-либо серьёзное было труднее, чем на том же С.

Да и думаю, программ на Хаскелле во столько же раз меньше, чем на С, во сколько меньше программистов.

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

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

> В Гноме-нет, в KDE-да. Потому что в гноме типизация динамическая и поэтому ABI сломать труднее.

На первый взгляд — примерно одинаково часто.

Нестабильность ABI С++, думаю, особой роли не играет. Гном и Кеды из стабильной Убунты, т.е. собирались из исходников одной и той же версией компилятора.

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

>Хаскелл стал набирать популярность в последние несколько лет. До недавнего времени было не так много библиотек, поэтому написать что-либо серьёзное было труднее, чем на том же С.

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

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

Перелом будет открытым. Со смещением.

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

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

>> Перелом будет открытым. Со смещением.

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

Костоправы будут заниматься последствиями перелома.

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

Нет. Там ещё есть... Один Hoogle стоит упомянуть. Чертовски быстр, когда ищет информацию по стандартным библиотекам самого Haskel. Когда пытаетесь прицепить внешние данные (типа как тут описано -> http://www.haskell.org/haskellwiki/Hoogle#Converting_text_databases_to_binary... , пп 1.2-1.3), то это напоминает совет «никогда не проделывайте этого дома». Точнее, «никогда этим не пользуйтесь».

ХЗ. Я пользуюсь Hayoo. Более удобного поиска по API я не видел.

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

Костоправы будут заниматься последствиями перелома.

вот-вот. и будут продолжать это делать, пока не срастётся правильно ;) лиспом, хаскелем, скалой, эрлангом. пока прогресс не стронет с места закостенелых ретроградов и пораженцев

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

>На первый взгляд — примерно одинаково часто.

Я что-то не припомню чтобы в гноме что-то крешилось. Только Анюта на x86_64 разве что.

Гном и Кеды из стабильной Убунты, т.е. собирались из исходников одной и той же версией компилятора.

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

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

если буду изучать haskell - появятся use keys :-)

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

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

> Впрочем, пойду-ка я делать уроки, пока Питекантроп не вернулся... :)))

Расслабьтесь, двоечники. :) У меня через несколько часов поезд в Крым, и выходные я собираюсь провести в районе Ай-петринской яйлы без интернета. :)

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

> ХЗ. Я пользуюсь Hayoo. Более удобного поиска по API я не видел.

Да я к нему пытался прикрутить поиск более разнородной информации, если честно. Учитывая то, что работать пришлось в отпуске, дабы заказчик не начал делать предупредительные выстрелы в голову, мне пришлось шевелиться. И быстро. В результате отполз на другой «поисковик», сейчас вот думаю — то ди его докурочивать, то ли что-то другое и более оптимальное подискивать. На СLucene. http://sourceforge.net/projects/clucene/

В принципе, всё работает. но хочется добавить скорости, т.к. если начнётся обработка сравнительно больших объёмов, то лучше иметь запас по производительности. Всё с большим интересом смотрю в сторону mnogosearch. Привлекает поддержка постгреса «ис каропки». Но будем тестировать. Если что, то во вторую версию его впихнём. Благо, в Т.З. этот момент не оговорён.

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

> У меня через несколько часов поезд в Крым, и выходные я собираюсь провести в районе Ай-петринской яйлы без интернета. :)

Ну слаааава Тебе, Госсподи... А то уж я думал, по всему лору будешь с дубиной наперевес носиться за мелкой рыбёшкой из вида анонимусов... :))))

Я подамся на Мещёрскую сторону. Домик там у меня рыбачье-охотничий. ;) Прямо на границе Приокского заповедника. :) Но я не балую... Не браконьерю, тоись...

Хорошо съездить. Без иронии. :)

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

> Только Анюта на x86_64 разве что.

Анька у меня есть где-то... Как-раз на x86_64, Gentoo. Анька версии 2.2.0, DevHelp к ней версии 0.21. Уверять что всё крайне стабильно не буду. Редко я пользуюсь этим, в основном, в gvim. Но крешей замечено не было.

Я что-то не припомню чтобы в гноме что-то крешилось.

Хммм... Да я вот то же удивляюсь сижу... Если честно... С «мультимедией» напрягов нет... Со всякой фигнёй типа утиля гномьего — то же. Эвольюшн (в отличие от ранних версий, когда он от косого взгляда на монитор, бывало, падал), подозрительно работоспособен... В общем, не знаю...

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

> пока прогресс не стронет с места закостенелых ретроградов и пораженцев

Гггг... Или пока не понапишут всего того же, что сейчас называют legacy и не упрутся в точно те же самые проблемы. Что и сейчас.

Помнится, всё «сычей-насильников» ретроградами обзывали «плюсовцы». Мы же, помнится, точно так же посмеивались в усы и отбрёхивались — «вот погодьте, придёт племя младое, незнакомое...» И оно пришло. Я про сишарповцев (как минимум). И теперь небо с овчинку уже у «плюсовцев».

Их прессуют. А нас... А чего нас прессовать... Мы ошибок в постфикс (например) как по-насажаем, так все и по-притихнут. И будут ждать пока починим — самим-то лезть «скушно». ;) Ну, это так... Пример... Чтоб понятно было... ;) Как вы не крутитесь, а пока legacy это С с С++, то хоть уставьтесь припарки трупу. Он нихрена не оживёт... :)))

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

> Только Анюта на x86_64 разве что.

Года два назад падала панель из-за какого-то аплета (да, действительно под x86_64). И были другие глюки. В конце концов ушёл на кеды. Но после выхода 4-х чуть не вернулся обратно.

Дело не в версии компилятора. Дело в том что диспатчинг по динамической сигнатуре типа принципиально надежнее.

Можешь пояснить почему? Честно говоря внутренности GTK особо не рассматривал. В плюсах за корректностью вызовов виртуальных методов компилятор следит, т.е. должно быть более-менее надёжно, если с кастами не ошибаться.

Да и как мне кажется, основная причина и там, и там — обращение в неправильные области памяти вследствие разыменовывания некорректных указателей, разве нет?

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

>Можешь пояснить почему? Честно говоря внутренности GTK особо не рассматривал.

Компилятор может только проверить непротиворечивость программерских предположений о типе. А рантаймовый код проверяет фактический тип.

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

> а так же FORTRAN, APL, и Cobol. и?

А их по большей части прессовали «сычи». :) Допрессовались себе на голову... И мало, если честно, кода на этих языках в «общем употреблении». Могу заметить, что Пролог, например, по сию пору используют. Для анализа некоторых вещей. Но чтобы массово на нём писали... Такого нет.

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

Равно как и Opera (нах не нужная)
равно как и драйвера от NVidia (а чего глаза-то ломать?)

И актуальный Фу-Шарп тарахтит себе под Арчем - аж пимжак заворачивается.

И где здесь угроза дзену?

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

>Ну я всегда считал, что когда компилер видит вызов функции, возвращающую указатель на массив строк, то он генерит код для соотвествующих манипуляций со стеком? А что будет если новая функция в рантайм возратит что-то иное? Компилера в райтайме уже нету? Кто будет манипулировать стеком?

Тут дело не в статической типизации, а в статической трансляции. Сейчас JIT (JVM, LLVM etc) легко справляются с задачей динамической модификации кода. В практический случаях проблем много, но они порождены дополнительными ограничениями технологий.

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