LINUX.ORG.RU

Вышел GHC 7.4.1

 , ,


0

3

Вышел GHC 7.4.1 – новый релиз компилятора функционального языка программирования Haskell. Это первый релиз стабильной ветки 7.4, которая станет основой для будущих версий платформы Haskell. Предыдущая ветка 7.2 была скорее полигоном для новых идей.

Основные изменения по сравнению с веткой 7.0:

  • Класс типов Num более не наследуется от классов Eq и Show. Как следствие, многие функции получили явные ограничения Eq и Show.
  • Новая возможность Safe Haskell (-XSafe, -XTrustworthy, -XUnsafe). Позволяет ввести более строгую проверку безопасности типов во время компиляции, а также служит для компиляции и выполнения «ненадёжного» кода.
  • Новая возможность полиморфизм видов (kind polymorhphism) (-XPolyKinds).
  • Новая возможность виды-ограничения (constraint kinds) (-XConstraintKinds). Любой тип вида Constraint может использоваться как ограничение типа.
  • Теперь можно задавать любые объявления в строке ввода ghci.
  • Реализации профилирования и hpc (проверки покрытия кода программ) были объединены и капитально переработаны.
  • Теперь можно писать плагины для компилятора.
  • Поддержка DPH (Data Paralell Haskell) значительно улучшена.
  • Предварительная поддержка регистровой (registerised) компиляции для платформы ARM, использующей LLVM.

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

★★★

Проверено: maxcom ()
Последнее исправление: pitekantrop (всего исправлений: 1)

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

А, прикольно) Сам Java-программер) Да, дженерики это хорошая штука... По слухам конечно недоделанная, но мне нравятся те возможности, которые я использую... С C++ не работал :-(

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

По слухам конечно недоделанная

Ну, там люди не хотели менять джава-машину, вот и пришлось ограничиться стиранием типов. В результате и получается, например, что одновременно реализовать MyInterface<Foo> и MyInterface<Bar> невозможно. Да и многое другое тоже.

Но это не отменяет того, что дженерики — штука полезная.

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

Хм. А разве MyInterface<? extends Foo> и MyInterface<? extends Bar> не дадут что надо? По идее должно... Если нет - то это грустно(

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

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

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

На пальцах: перегрузка методов - это (в общем случае) ad-hoc полиморфизм. А «параметрический» - это такая разновидность динамической типизации с дактайпингом и проверкой применимости полиморфной функции (и в случае неудачи - детектирование неисправности, сигнализирование об ошибке, возбуждение исключения) к типизированным данным в *compile*-time, а не в run-time. Если еще упростить определение, то ПП - это костыль в статически типизированных языках для имитации строгой динамической типизации с опциональной проверкой типа. Как-то так

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

Спасибо) Но я вроде бы уже разобрался) Интересная это тема вообще говоря) Эх, найти бы еще время и прочитать таки минимум книг, который нужен... А их много(

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

найти бы еще время и прочитать таки минимум книг, который нужен

Никакого минимум на самом деле нет - читай то, что тебе интересно в *данный* момент. Если неинтересно ничего - сходи лучше с девочкой какой погуляй

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

Хаскель стал сложнее самого себя. Язык должен быть решением, а не проблемой!

Первый раз читаю такие золотые слова о хаскеле! :))
Не, ну правда... получается PL/1, только насыщается не функциями, а «мозгозакрутасами». Хоть один человек есть, который понимает и использует ВСЕ фичи?!
Я вот у цэшарпа юзаю весь спектр языковых конструкций, что помогает читать практически любую шарпо-программу. Зато каждый раз, когда вижу Хацкель, создаётся ощущение, что писал куда-то спешащий человек заметку на салфетке.

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

Кабал-интсал уже понимает ghc-7.4.1?

Специально ради тебя качнул бинарник GHC под x86-64.

1. cabal-install действительно нихрена не понимает.
2. Требуется подправить исходник (в одном месте, по 100% понятной наводке компилятора).
3. Требуется поправить bootstrap.sh и cabal-install.cabal
4. Требуется руками поставить text и random (можно поправить bootstrap.sh)
5. ???
6. PROFIT!

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

НУ просто из интересных книг на данный момент я вижу SICP, HTDP, TAPL, CfWM, Кормен, дискретная математика... И вдобавок надо бы таки прочитать Thinking in Java и Effective Java или что нибудь подобное... А в недалеком будущем возможно придется много что еще изучать :-((( Все таки программист веселая работа - столько нового и интересного каждый день... Хотя моя университетская специальность тоже интересна) Только вот я не знаю ни одного завода в своем городе, который бы этим сейчас занимался. Не говоря уже о зарплате...

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

Вспомни haskell 98 без расширений. Там даже список char с int'ами нельзя было написать. Ну в смысле можно, но только обвернув в data, причём все возможные типы необходимо было описать до самого листа. Коммандная работа была затруднена сильно да и гемора много. А теперь в ghc все есть, только екстеншены включать не забывай. Редко когда найдется прога без важных экстеншенов. Остальные же экстеншены придают языку крутость, значительно обгоняя соперников.

ЗЫ. Лисперы, негодуйте! Ваши макросы тоже круты.

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

Хоть один человек есть, который понимает и использует ВСЕ фичи?!

Да, его зовут Олег Киселев. ::lol::

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

Хотя моя университетская специальность тоже интересна

Че за специальность?

Только вот я не знаю ни одного завода в своем городе, который бы этим сейчас занимался

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

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

Специально ради тебя качнул бинарник GHC под x86-64.

Спасибо, но я ему все-равно не сильно доверяю. Уж больно много странностей было в его поведении раньше. Да и не смог бы он поставить мне есод, который я вынужден был ставить с житхаба.

ЗЫ. Удалось ли его заставить работать именно с Cabal-1.14.0 или он тянул свой старый?

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

Удалось ли его заставить работать именно с Cabal-1.14.0 или он тянул свой старый?

Установщик cabal-install тянул что я ему скажу: тупо последние версии с хакейджа.

Cabal-1.14.0 идет в составе бинарника GHC. Подробнее смотри ghc-pkg list.

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

Микроэлектроника и твердотельная электроника. Город - Саратов. Поступил честно говоря случайно, собирался на КНиИТ в СГУ. Ну а там дальше было одно забавное совпадение и я стал микроэлектронщиком) Хотя с апреля работаю программистом, успел побывать в одном стартапе(как раз первое место работы) и в средней руки компании(там были кое какие проблемы, поэтому в понедельник последний рабочий день и опять искать работу. Ну или не искать пока что).

А программирование - это еще детское увлечение. К сожалению, когда в 15 появился компьютер - не смог взять себя в руки и начать изучать что то более серьезное, чем QBasic, который требовался в колледже и азы Linux'а...

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

Микроэлектроника и твердотельная электроника

Хотя с апреля работаю программистом

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

Ну и зря, лучше бы учился пока есть время - специальность хорошая

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

Схему, которая, да, основана ... на нетипизированном лямбда-исчислении?

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

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

Еще вопрос - а как расшифровывается MLTT?

MLTT — это Теория Типов Мартина-Лёфа.

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

Хаскель можно транслировать в C.

а наоборот?

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

Cabal-1.14.0 идет в составе бинарника GHC. Подробнее смотри ghc-pkg list.

Идет. Но не юзается старым cabal-instal'ом:

Cabal-1.10.1.0 will be downloaded and installed. transformers is already installed and the version is ok. mtl is already installed and the version is ok. parsec is already installed and the version is ok. network is already installed and the version is ok. time-1.2.0.4 will be downloaded and installed. HTTP-4000.1.1 will be downloaded and installed. zlib is already installed and the version is ok.

И где я в одной строке поправлю Setup: At least the following dependencies are missing: base >=4 && <3 && >=2 && <5, filepath >=1 && <1.3, unix >=2.0 && <2.5

В то время как уже стоит unix-2.5.1.0 time-1.4 filepath-1.3.0.0

Нужен ли мне зоопарк пакетов или всё поправить в cabal-install.cabal?

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

Не всегда есть возможность отдавать время только учебе :-( А знания... Специальность хорошая. Но вот устроиться по ней можно только в аспирантуру...

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

Что нам дает параметрический полиморфизм?

На этот вопрос здесь никто не ответит - будут куда-то отправлять по левым ссылкам, приводить заезжанные копипасты

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

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

В racket'е есть типизированный подъязык.

Есть. Правда я не смотрел.

Только все-равно логика второго порядка. Куда ты от нее денешься? Схеме нужен хороший логический фреймворк. Но это только половина пути. Останется еще научиться применять его на практике.

Причем из-за динамической природы Схемы можно творить соврешенно отвязные вещи типа зависимых (от значения) типов, самых извращенных вычислений на типах и т.д.

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

Почти все они - унылый копипаст друг друга.

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

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

Ха. При попытке выпилять левые ограничения с cabal-install.cabal, которых было немало (особенно доставил base который по какому-то волшебству хотел быть старым) он всеравно не собрался из-за новшеств 7.4.

Distribution/Client/Tar.hs:748:29: Could not deduce (Show a) arising from a use of `showOct' from the context (Integral a)

Ну ничего, соберу таки, вдруг заработает

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

Идет. Но не юзается старым cabal-instal'ом

Да закомментируй ты его нафиг в bootstrap.sh (если ты про него). И заодно time.

Нужен ли мне зоопарк пакетов или всё поправить в cabal-install.cabal

Последний cabal-install датирован мартом прошлого года ;) Ответ, ИМХО, очевиден.

Еще раз. Политика была такая: а) если пакет идет в составе GHC — сохранить версию GHC, б) иначе — скачать последнюю версию хакеджа.

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

Could not deduce (Show a)

Еще немного и все получится. Компилятор сообщает где и что ему нужно поправить, ИЧХ, правильно сообщает.

Вообще, такие ошибки компилятор должен сам исправлять. ;) Нефиг, ибо.

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

Да, верно. Но без правки кучи строк в .cabal и одной в сорцах не обошлось. bootstrap.sh я вообще не запускаю, ибо зачем он мне когда я всё и так поставил. Теперь еще бы работал.

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

Вобщем hello поставился. Надобности в кабалинстале пока большой нет. Всеравно большинство пакетов править надо.

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

Чувак, а ты про KolibriOS, например, вообще не слышал?

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

Мой CAS написан на C++ (GiNaC)

Может потому он еще даже интегрировать не научился? :)

а Emacs сливает по полной даже

Убил авторитетными аргументами :D

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

Юзай си-шарп. Там дженерики в язык встроены.

Тоже через жопу, надо сказать, хотя и через другую. Шарп в рантайме создаёт новые классы.

Я лучше Хаскель буду юзать.

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

А «параметрический» - это такая разновидность динамической типизации

Кончай бредить.

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

Distribution/Client/Tar.hs:748:29: Could not deduce (Show a) arising from a use of `showOct' from the context (Integral a)

Ну дык добавь туда в контекст Show a. Делов-то.

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

Что на этом вашем хацкеле такого написано, что доказало бы его нужность? Или это лишь ещё один способ потешить ЧСВ и попонтоваться в школе?

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

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

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

Ну дык добавь туда в контекст Show a. Делов-то.

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

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

Иногда он удобен. Только для определенных типов задач и когда выучил хорошо язык с расширениями. Вобщем если нет любви к языку или желания поразвлечься меняя стиль мышления, то изучения хаскеля для реальных задач не оправдано. Действительно поддержка так хромает что мне всё время хочется открыть собственный хакейдж. Кстати, а как вы относитесь к идее юзать иерархические имена пакетов типа org.haskell.vasya.bytestring чтоб я мог прозрачно заменять системные пакеты на собственные?

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

А для реальных задач хаскель неудобен

А мужики-то из Galois Inc не знают!!!!

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

Некого ставить с хакейджа без правок.

Happstack, например. В комплекте идет куча различных пакетов. Хотя если ты тот аноним, что руками поставил Yesod, тебе действительно больше нечего ставить ;) Ибо половину хакейджа ты уже поставил ;)

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

о, респект, Абрамов харизматичнейший чел.

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