LINUX.ORG.RU

Вышел Glasgow Haskell Compiler 7.10.1

 ,


1

4

27 Марта 2015 года вышла новая версия компилятора и интерпретатора функционального языка программирования Haskell.

Из интересного:

  • Новое расширение StaticPointers для распределенных вычислений: обзор
  • Поддержка плагинов в модуль проверки типов
  • GHC начал понимать опцию -g, которая добавляет отладочную DWARF секцию для отладчиков (например, gdb) и профилировщиков (например, perf)
  • Встроенная библиотека работы с числами Integer использует более эффективный распределитель памяти.
  • Улучшена поддержка динамических библиотек на архитуетурах PowerPC, SPARC, Itanium
  • Исправлено непомерное потребление памяти при компиляции типов с большим числом конструкторов в режиме -O2 (SpecConstr bug)
  • И многое другое

Изменения, влияющие на обратную совместимость:

>>> Все изменения

★★★

Проверено: Shaman007 ()
Последнее исправление: sf (всего исправлений: 2)

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

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

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

Нет, не этот. Это HDL. Я имел в виду «SoCи c Haskell'ем». Конкретных ссылок, к сожалению, на данный пример привести не могу, ищи тут Galois.

А вообще, специально для таких троллей, был создана страничка https://wiki.haskell.org/Haskell_in_industry.

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

В тырпрайзе ванильный GHC нахрен не нужн, и используется только упорышами.

В тырпрайзе хацкель дописывается и лишь потом как-то используется.

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

Можно поинтересоваться вашим опытом использования haskell в production?

qnikst ★★★★★
()

Haskell calls a couple of historical accidents its own. While some of them, such as the «number classes» hierarchy, can be justified by pragmatism or lack of a strictly better suggestion...

А чего там такого военного в иерархии классов про числа?

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

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

UPD + Num vs инстансы в numeric-prelude

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

Я работал в интерпрайзе, то, что ты пишешь, в целом похоже, но сильно утрировано. В частности требования к качеству и производительности зачастую такие: как нибудь зарелизим, будут жаловаться, поправим, тормозит? да всем насрать. И не надо думать что на биржах все не так. Так, только чуть напильником дорабатывают, что бы хоть какой-это перфоманс был. Ошибки компенсируются отдельными риск-фильтрами, которые много раз дублируются.

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

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

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

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

Вот это отличные планы по самореализации! Так держать.

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

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

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

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

Она должна быть надёжна как молоток. Никакие левые данные не могут её грохнуть, нет никаких утечек памяти, делений на ноль, данных шрёдингера и прочей аномалии.
Интыпрайз

Лол!

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

Она должна быть надёжна как молоток.

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

Программа не может обновляться еженедельно

Обновляется несколько раз в неделю. На тестирование отводится неделя (по принципу «кто не спрятался, я не виноват»). Патчи копятся до момента кода «совсем припрёт».

У «интыпрайза» крайне дорогое время простоя

Дорогое... Клиент орёт: «Я ВАС СУКИ ЗАРЭЖУ», но всем пофиг. Не на нас же он орёт.

всё должно быть максимально быстро

Регулярные рассылки в конце и начала месяца: не держите открытыми сессии, не запускайте сложные отчёты, ибо тормозит. Вся регламентщина типа загрузки НСИ или расчёта ФОР делается строго утром/ночью.

и все они имеют свои форматы, поменять которые уже никто не сможет

Форматы обмена регулярно меняются. Вон в понедельник новый УФЭБС. Регулярно меняются отчётные формы, на горизонте маячат «новые» форматы обмена с ФНС. Форматы налоговых деклараций меняются строго раз в отчётный период (но это не совсем наши проблемы). СМЭВ/ГИС ГМП постоянно пилят, но я, слава Богу этого не касаюсь, там своя кухня. Форматы обмена с ФССП пока вводятся по частям, но потом конечно же будут меняться. Разработчики тоже кушать хочут.

Интыпрайз крайне инертен.

Вот уж в точку. XML до сих пор парсят с помощью split, а рисуют с помощью конкатенации. Хотя в оракле, казалось бы, целая инфрастуктура. Да и в системе, в принципе тоже, вот только изначально форматы были текстовыми, а потом их ради всеобщего блага решили перевести на XML, но разработчики решили не переписывать с нуля, а запилить свой собственный «разборщик» размером в 300 килобайт чистого и незамутнённого PL/SQL.

Продолжай жечь дальше, камрад.

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

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

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

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

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

А «хасекллисты», то есть любознательные и трудолюбивые люди, во всю разъезжают по развитым странам.

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

Могу даже две назвать: факториал и числа фибоначчи.

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

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

Может, просто после каждого взаимодействия с пользователем мы имеем нового пользователя и новый окружающий мир =)

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

Если светофор в деревне, то глупо. А если супернагруженная развязка?

Hint: надёжные программы могут быть сложнее hello world'а.

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

надрачивают
монадки

Походу тут не хаскеллисты пытаются

компенсировать чувство собственной неполноценности

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

«Развитые» при первой возможности станут радирактивным пеплом.

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

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

Прицепились вы к этим монадкам. И почему на них нужно как-то надрачивать? Вы на целочисленные типы данных или на for-loops надрачиваете? Ведь чушь же написали. Ну и если так прет от процесса, что во время отпуска хочется поработать, то разве это плохо?

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

Вы на целочисленные типы данных или на for-loops надрачиваете?

Они сейчас надрачивают на умные поинтеры и лямбды в крестьянской версии Си от 11 и 14 годов выпуска.

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

При чем тут компилятор?

Генерирует исполняемый файл на основании команд исходного языка.

Вопрос на засыпку: есть ли тут «only expressions which cannot mutate variables (local or global)»?

int main(){
  int a = 0;
  ++a;
  return 0;
}

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

С другой стороны

#define A 0
int main(){
  int a = A;
#define A 1
  int b = A;
  return 0;
}

не будет чистой программой, так как #define A 1 переопределяет переменную A, которая используется в процессе компиляции.

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

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

Единственное, что роднит оба этих типа — не надо выбирать интенсивно разрабатываемые инструменты. Чтобы хотя бы с инструментами не бороться.

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

По прочтении подробностей у меня возникло подозрение, что оно компилируется в нативный код

Так давно уже

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

1. Она должна быть надёжна как молоток. Никакие левые данные не могут её грохнуть, нет никаких утечек памяти, делений на ноль, данных шрёдингера и прочей аномалии.

LiquidHaskell

iVS ★★★★★
()

Пробовал как-то изучать и писать на Хаскеле. Мне не понравилось то, что он позволяет множество алгоритмов записывать в сильно сжатой форме. И многие этой возможностью злоупотребляют и считают это офигеной фичей. А по мне - код должен читатся легко, без лишних работы мозга по его распаковыванию.

Пример злостного сжатия: http://hackage.haskell.org/package/base-4.7.0.1/docs/src/Data-List.html#permu...

permutations            :: [a] -> [[a]]
permutations xs0        =  xs0 : perms xs0 []
  where
    perms []     _  = []
    perms (t:ts) is = foldr interleave (perms ts (t:is)) (permutations is)
      where interleave    xs     r = let (_,zs) = interleave' id xs r in zs
            interleave' _ []     r = (ts, r)
            interleave' f (y:ys) r = let (us,zs) = interleave' (f . (y:)) ys r
                                     in  (y:us, f (t:y:us) : zs)
EvgenijM86
()
Ответ на: комментарий от EvgenijM86

Пример злостного сжатия

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

Скучно... Тролли! Хотите еды — извольте поработать.

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

А зачем? Вы никогда что-ли не видели как алгоритмы пишутся в императивном стиле? Если видели, то вот. Если нет, то вам этот разговор стоит отложить на некоторое время.

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

Уважаемый, Евгений, не могли бы вы подробно объяснить о что конкретно помешало вам записать этот алгоритм в императивном (или похожем на нем) стиле. Это так для того чтобы было понятно, что разговор можно начинать..

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

Мне конкретно сейчас помешало то, что мне не было никакой нужды переписывать этот конкретный алгоритм из библиотеки Haskell на императивный стиль. Вот не встаю я по утрам и не переписываю на угад алгоритмы из библиотек одного языка в другой. Такой вот я странный человек. И ради анонимного комментария я тоже это делать не буду.

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

К тому же, еще и питонщик.

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

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

Такой вот я странный человек

Действительно странный... Копаться в base. Как бы это помягче... Стандартная библиотека, она на то и дана чтобы в ней не копаться. Есть реализация, ну и ладушки. Тем более для реальных задач такая реализация пермутации не подходит.

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

Я всегда хоть немного просматриваю стандартные библиотеки языков которые берусь изучать. Просто чтобы видеть как надо хорошо/правильно на них писать. Исходя из предположенная, что в стандартные библиотеки не будут тащить что попало (в смысле качества).

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

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

мне просто там понравился синтакс обхода массива

Не различаем массивы и списки? Бывает!

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

Массивы же в хаскеле — совсем другая песня.

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

На Haskell замечательно писать, но не удобно читать - вот и вся моя мысль.

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

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

будут тащить что попало (в смысле качества).

А чем тебе качество-то не угодило? Всё нормально с качеством. Только не подходит данное решение для реальных задач когда надо много и быстро.

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

Только не подходит данное решение для реальных задач когда надо много и быстро.

Интересует такой вопрос: как сейчас акселерейт в сравнении с репой в плане качества имплементации? У акселерейта очевидной фичей является возможность писать один код для ЦПУ и прочих акселераторов, но как у него со скоростью на обычном процессоре, в сравнении с репой?

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

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

Вот не встаю я по утрам и не переписываю на угад алгоритмы из библиотек одного языка в другой.

Вам этого никто не предагал.

И ради анонимного комментария я тоже это делать не буду.

да, я согласен, не мешало бы вам представиться :)

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