LINUX.ORG.RU

GHC 8.8.1

 , ,


5

9

Тихо и незаметно, вышла новая версия известного компилятора языка программирования Haskell.

Среди изменений:

  • Поддержка профилирования на 64-битных системах с Windows.
  • GHC теперь требует LLVM версии 7.
  • Метод fail окончательно вынесен из класса Monad, теперь он находится в классе MonadFail (финальная часть MonadFail Proposal).
  • Явное применение типа (type application) теперь работает и для самих типов, а не только для значений.
  • forall теперь является ключевым словом вне зависимости от контекста, что позволяет использовать его в type families и rewrite rules.
  • Улучшен алгоритм компоновки кода для x86.
  • Множество других изменений.

>>> Полный список изменений

>>> Гайд по миграции кода на новую версию

>>> Скачать

★★★★★

Проверено: jollheef ()
Последнее исправление: Virtuos86 (всего исправлений: 4)

ghc это здрово

the LLVM backend of this release is compatible with LLVM 7.

но llvm 7 это зачем новому ghc ? почему не llvm 9 или хотя бы llvm 8 ?

Deleted
()

Всем борща в этом ITT-тренделе!

anonymous
()

Ну и кому нужен этот зашкваренныэй хахель? МС как всегда, все испортила.

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

Это минимальная версия, как я понял. Ты можешь поставить llvm 9, если хочешь.

hateyoufeel ★★★★★
() автор топика

Его в продакшене много юзают?

Vinni_Pooh ★★★★★
()

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

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

Основы изучаются легко и непринуждённо по курсу на степике в двух частях. Математики никакой не нужно это само изучение хаскеля может использоваться для мягкого погружения в соответствующую математику. Я, кстати, не понимаю, как она может быть не интересна, если интересен сам хаскель.

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

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

Производительность не играет роли, хочу научится для себя.

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

Ты про сломанную совместимость? Или при чем тут рефакторинг?

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

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

А оно везде так. Либо некрасиво, но работает, либо красиво, не не работает

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

Вот тут у Брагилевского была хорошая серия обзоров современных учебников Haskell’а.

и по каким книгам, ресурсам учили его вы?

Я учил, как щас помню, по Yet Another Haskell Tutorial. Но это было давно (добрых лет 10 назад) и сейчас есть учебники и лучше, и актуальнее.

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

*работает медленно

Хрен знает. Мы тут в одном проекте accelerate использовали. Вышло довольно сносно внешне, и на выходе готовый код для LLVM и CUDA.

hateyoufeel ★★★★★
() автор топика

Конечно же я должен знать что такое САБЖ или открывать новость чтобы узнать. Я и о языке таком не знал. Заголовки новостей продолжают оставаться не информативными. Элементарно же составляется заголовок максимально информативный, чтобы не открывать новость, если не интересно.

Новая версия компилятора GHC языка Haskell.

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

Жопой чую очередной рефакторинг.

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

dave ★★★★★
()

Метод fail окончательно вынесен из класса Monad

Это win

Crocodoom ★★★★★
()

В идеальном мире все пишут на Haskell, Rust или Python.

  • Haskell для задач, где допустим сборщик мусора
  • Rust, если приходится спускаться в системщину
  • Python для скриптов и прототипов
Crocodoom ★★★★★
()

Когда установщик похудеет?

Deleted
()

Только вылез из криокамеры. Оно все еще совместимо со стандартом или это уже отдельный язык

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

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

vertexua ★★★★★
()

Вижу есть ещё хаскеллисты на ЛОРе. Так от, чем оно лучше и хуже OCaml.

Я если че более менее знаю Haskell, и не знаю OCaml

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

производительный код

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

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

С окамлом не надо молиться чтоб код не провалился в ленивую яму. Производительность предсказуемая.

Не надо приседать (со штангой) чтоб использовать банальную мутабельность.

Не надо переписывать код с выходом новой версии сабжа.

Язык для практиков.

anonymous
()

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

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

Вижу есть ещё хаскеллисты на ЛОРе

После 1го сентября им будет не до ЛОРа

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

Миран Липовача, «Изучай Haskell во имя добра!».

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

Мне даже страшно представить аудиоплеер на сабже :)

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

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

С окамлом не надо молиться чтоб код не провалился в ленивую яму. Производительность предсказуемая.

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/ocaml-ghc...

Из 10 программ в 5 случаях Haskell быстрее. Причём в худшем случае Haskell в 2 раза медленнее, а в лучшем — в 12 раз быстрее.

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

Первый overbloated, C++ от мира ФП, второй архаичен и вычурен (по крайней мере, когда про него читаешь, именно это приходит на ум).
Ваш диванный эксперт.

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

Язык в принципе не поддерживает ручную специализацию классов для некоторых видов типов ради производительности

Что такое вид типа? И ты точно уверен, что ни одна из 100500 прагм GHC не позволяет добиться нужного?

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

Что такое вид типа

Ну если ты например массив примитивных типов, то представление данных брать другое.

ни одна из 100500 прагм GHC не позволяет добиться нужного?

Ну может тут я просто сам не смог. Но вот победить тотальность точно никак нельзя. Типа если я хочу сделать MyMonad x монадой только для некоторых иксов. Или например я хочу реализовать arrows на GPU (в смысле в виде кодогенератора вместо вычисления значений) и поэтому не могу предоставить конструктор стрелки из любой функции (только из списка заранее выбранных функий). Бесит короче. Даже в плюсах можно почти как угодно специализировать шаблоны и реализовывать их только для части типов.

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

Вижу есть ещё хаскеллисты на ЛОРе. Так от, чем оно лучше и хуже OCaml.

В Haskell ссылочная прозрачность, которая позволила сделать язык ленивым и чистым. Это все меняет.

Из других столпов, в Haskell классы типов, по образу и подобию которых были сделаны traits в Rust, только классы типов по-мощнее и выразительнее будут.

Еще у Haskell очень маленькое ядро. Плюс зеленые потоки, но можно при желании привязать поток к системному.

На счет того, что практичнее? Haskell или Ocaml? Это большой вопрос. Мне кажется, что в 2019 году Haskell практичнее, но нужно уметь работать с ленивостью.

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

Так я же пишу не что скорость плохая, а что непредсказуемая. Само собой что запинать алгоритм можно, тем более для синтетики.

Вопрос в том, сколько на это надо усилий, что станет после этого с красивым кодом, и сколько wtf словит в процессе программер.

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

А вот точно не знаю. Это я уже не в сравнении написал. Хорошее замечание)

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

Типа если я хочу сделать MyMonad x монадой только для некоторых иксов.

Ты можешь задать ограничение на x для MyMonad в принципе.

data MyMonad x where
  MkMyMonad :: SomeClass x => x -> MyMonad x

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

Вот это я не совсем распарсил.

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

Ты можешь задать ограничение на x для MyMonad в принципе.

Только instance Monad MyMonad уже некак написать. В смысле для x не из SomeClass невозможно придумать реализацию монады. Хотя может bottom вернуть и норм... Но стоп, при реализации монады у меня нет перегрузки по x ёпт

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

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

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

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

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

Короче я о том, что в корне ошибочно писать реализацию instance Monad M с точки зрения производительности. Надо чтоб монада реализовывалась как instance SomeType x => Monad M x. Тоесть надо выпилить из языка кайнды в принципе, иначе ни о какой производительности не может быть и речи

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

В каких-то случаях работает медленно и есть не работает.

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

А вообще, дело вкуса. В основном, французы его используют. Наверное, сложилось так исторически. Между OCaml и ML разницы не так много. С хаскелем, конечно, побольше.

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