LINUX.ORG.RU

Glasgow Haskell Compiler 7.6.1

 , ,


1

5

Вышла новая версия GHC 7.6.1 — одного из самых мощных и развитых на сегодняшний день компиляторов функционального языка программирования Haskell, который разрабатывается свободной рабочей группой из многочисленных разработчиков, собранных по всему миру и координируемых из лаборатории университета Глазго.

Основные изменения:

  • polymorphic kinds и data promotion полностью реализованы, Kind polymorphism;
  • реализована поддержка платформы Windows 64bit;
  • флаг -fdefer-type-error позволяет отложить обнаружение ошибок типов в рантайме, Deferring type errors to runtime;
  • опцию RTS -N возможно изменять в рантайме с помощью Control.Concurrent.setNumCapabilities, RTS options for SMP parallelism;
  • новое расширение ExplicitNamespaces, которое разрешает ограничивать экспорт типов с ключевым словом type;
  • изменено поведение расширения TypeOperator;
  • добавлена возможность вывести экземпляры Generic1 автоматически, Generic programming;
  • новое соглашение о вызовах FFI capi, включаемое через расширение CAPI;
  • новая прагма CTYPE, используемая с CAPI;
  • новое расширение InstanceSigs, которое разрешает типам сигнатур быть специфицированными в instance;
  • GHC поддерживает числовые и строковые (включаемые через DataKinds) и символьные литералы, Promoted Literals;
  • тип Any может быть использован как аргумент для foreign prim functions;
  • ключевое слово mdo вновь введено. Оно может быть использовано для создания do-выражения с рекурсивными привязками. Поведение ключевого слова rec было изменено;
  • новая синтаксическая конструкция (включаемая через расширение LambdaCase) для создания анонимной функции из case-выражения, Lamda-case;
  • исправление ошибок и улучшение производительности.

>>> Подробности

★★★★★

Проверено: mono ()

Вечерком соберу.
З.Ы. Посоветуйте папир для правильного конструирования типов в хаскеле, а то мои творения на С++ похожи...

proofit404 ()

Нужно. Очень повышает чсв, а это помогает знакомиться с женщинами (они, чертовки, чувствуют неуверенность).

plm ★★★★★ ()

polymorphic kinds и data promotion полностью реализованы, Kind polymorphism;

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

anonymous ()

реализована поддержка платформы Windows 64bit;

Прорыв! Стоит попробовать.

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

они, чертовки, чувствуют неуверенность

Блин, вот в чем дело! Срочно перехожу на Haskell.

P.S. Неуверен в себе, пишу на C# для оффтопика.

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

Очень повышает чсв, а это помогает знакомиться с женщинами

P.S. Неуверен в себе, пишу на C# для оффтопика.

попробуй Common Lisp. Плюс ко всему выше перечисленному, он ближе к реалиям сегодняшнего быдлокодинга.

gensym ★★ ()

теперь вен...^W^W^W^W

реализована поддержка платформы Windows 64bit;

Bad_ptr ★★★★ ()

реализована поддержка платформы Windows 64bit;

Да это прорыв. Главное - вовремя.

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

Женщины не нужны.

Кому как. :-)

Как и Хацкель.

Хм ...

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

попробуй Common Lisp. Плюс ко всему выше перечисленному, он ближе к реалиям сегодняшнего быдлокодинга.

Тогда уж python. :)

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

Нужно. Очень повышает чсв

Согласен. Практика писанины на языке, где даже нет нормальных records несомненно повышает ЧСВ. Как вариант, можно ещё научиться ходить по канату. :-)

rtvd ★★★★★ ()

Ой не люблю я функциональные языки. :(
От них мозг превращается в стек с глубиной единица :(

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

Практика писанины на языке, где даже нет нормальных records несомненно повышает ЧСВ. Как вариант, можно ещё научиться ходить по канату

Поздравляю тебя, Шарик, ты балбес. В нормальных языках records-шмекордс не нужны.

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

Ой не понимаю я функциональные языки. Я быдлокодер и учиться не хочу.



fixed

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

Неуверен в себе, пишу на C# для оффтопика.

А может, ну их, тогда, женщин? И вообще, переходи на БСД и забивай стрелку с МакКузиком.

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

Женщины не нужны. Как и Хацкель.

т.е. ты считаешь, что каждый, кто не знает какацкель, тот... кхм... тому надо купить макбук?

Rastafarra ★★★ ()
Последнее исправление: Rastafarra (всего исправлений: 1)
Ответ на: комментарий от Ritmik

Поздравляю тебя, Шарик, ты балбес. В нормальных языках records-шмекордс не нужны.

Котэ, тот-то я думаю, чего это народ в Haskell community столько с этими ненужными records долбался и до сих пор этим занимается. %) Иди, покушай свою тухлую селёдку.

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

Да, и продемонстрируй-ка мне портфолио своих проектов на «нормальных языках без records».

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

Не ради троллинга: где он используется, и где посмотреть на живые примеры?

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

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

А проектов много на Haskell - даже веб-фреймворков с модулями аля Ruby. Про плюсы от функционального программирования начитан, но очень не легко отказываться от старых привычек сейчас, поэтому медленно их ломаю у себя - получается почти безболезненно. Очень рад учебнику на русском отпечанном недавно «Haskell во имя добра». Также есть в сети неотпечанные и тоже на русском языке.

Еще бы вечерних курсов замутил кто-нибудь по веб-фреймворкам для Haskell, типа недавно организованных курсов по Ruby on Rails в Специалисте (не думаю что «марсианам» оно нужно, им кроме Rails и немного Erlang ничего больше не интересно, поэтому вся надежда на Душкина - автора учебников по Haskell).

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

Первое в мире веб-приложение на чём написано?

ados ★★★★★ ()

зачем это, когда есть typed racket?

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

Да, давай. Ато что-то давненько на ЛОРе лиспосрача не было.

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

Я знаю на чем оно было написано. И так же, емнип, успешно было переписано на что-то другое после ухода Грэма. Но все равно, хотелось бы увидеть что-нибудь более энтерпрайзное, а то постоянно вижу восхваления «великого лиспа», но не вижу реально использующихся приложений.

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

даже нет
records

Лол. Большинство пишет на языках где «даже» нельзя узнать чистая функция или нет, а вы докапываетесь до рекордов.

Сколько мейнстримных языков умеют полиморфизм по возвращаемому значению? А полиморфизм по кайнду отличному от *?

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

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

Revernote ()

Минорная ненужность. Закопайте! Вышел же lazarus 1.0, после этого все ваши какашкели можно выбрасывать.

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

Нет, не читал. А что не так с их лицензиями? За ссылку спасибо, хотя там я уже был.

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

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

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

Они питон с шарпом не осилят никогда, мозгов не хватит. Скорее говноадминят локалхосты и 1Сишку конфигуряют.

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

И что с того?

Я согласен с тем, что это - полезные фичи. Но на практике оказывается, что решающего значения они не имеют.

Может я ошибаюсь? Есть примеры неигрушечных и желательно коммерческих проектов, где разработчики бы говорили что «records вообще не нужны были, а вот полиморфизм по kind отличному от * был ну просто очень нужен»?

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

Сколько мейнстримных языков умеют полиморфизм по возвращаемому значению?

Ни в коем случае не защищаю С++, но он вроде как умеет:
void func(int arg, int *ret);
void func(int arg, float *ret);

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

полезные фичи

Здоровая система типов - это не полезная фича, это основа. Но на практике оказывается, что находятся даже люди, которым нравится писать на питоне.

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

У хаскеля много проблем посерьезнее рекордов.

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

Ни в коем случае не защищаю С++, но он вроде как умеет

Это не то, то это

int func() { return 42; }
char *func() { return "42"; }
quasimoto ★★★★ ()
Ответ на: комментарий от quasimoto

Не вижу принципиальной разницы. Вы написали в стиле, когда полиморфизм по возвращаемому значению невозможен. Я написал в стиле, когда возможен.

Функции у нас выполняют ровно туже цель — принимают аргументы, возвращают значения. Полиморфизм по возвращаемому значению в С++ возможен.

hexdump01010101 ()

флаг -fdefer-type-error позволяет отложить обнаружение ошибок типов в рантайме, Deferring type errors to runtime;

эээээ..

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

флаг -fdefer-type-error позволяет отложить обнаружение ошибок типов в рантайме, Deferring type errors to runtime;
эээээ..

Меня, кстати, тоже несколько смутило. Ведь фишка haskell'я в его строгости. А строгость в проверке типов это, прежде всего — отлов багов на стадии сборки. Когда проверка типов перемещается в рантайм, то, как минимум, половина смысла пропадает.

Чем руководствовались авторы? Может как-то связанно с мета-программированием? Мол если код генерируется «налету», то и проверять тогда имеет смысл только «налету»?

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

Я написал в стиле, когда возможен.

(Ad-hoc) полиморфизм по аргументам это полиморфизм по _принимаемым_ значениям, это НЕ называется полиморфизмом по возвращаемым значениям. Аргументы и возвращаемые значения это разные вещи - одно на входе, другое на выходе функции. Полиморфизм по возвращаемому значению это когда можно перегрузить тип результата.

Полиморфную по аргументам функцию func можно мыслить как две функции func_int_intp и func_int_floatp, также как и полиморфную по результатам как пару функций int_func_void и charp_func_void. В статически типизированном языке к ним можно обращаться просто как к func - типы известны, нужная функция будет подставлена автоматически.

Полиморфизм по возвращаемому значению в С++ возможен.

Нет, конечно. Только перегрузка по принимаемым аргументам.

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

Аргументы и возвращаемые значения это разные вещи - одно на входе, другое на выходе функции.

Вы понимаете, что при работе с указателями, аргумент и возвращаемое значение вещи сугубо условные? Вы можете вообще исключить «return value;» из языка, и всё равно иметь полноценные понятия «функция», «аргументы» и «возвращаемое значение».

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