Cheese
в шапке каждой страницы ссылка на гитхаб
наверно, надо сделать её покрупнее
Cheese
наверно, надо сделать её покрупнее
в идеале бы с каждой страницы ссылку на её исходник, но с hakyll это будет очень сложно
Dmitry
Хм, ну там всё есть, все каналы.
Dmitry
Я бы только ещё секцию про редакторы добавил
Dmitry
Чуть позже сделаю PR
Cheese
может, и ресурсы на вики перенести...
Dmitry
wiki ?
Dmitry
Это где?
Cheese
странный ворнинг λ> data T = A{x :: Int, someOtherFields :: Bool} | B λ> let f a@A{x} = a{x = x + 1}; f B = B <interactive>:12:16: warning: [-Wincomplete-record-updates] Pattern match(es) are non-exhaustive In a record-update construct: Patterns not matched: B я всего лишь использовал A после проверки на A. как это делать правильно?
Aleksei (astynax)
wiki ?
https://github.com/ruHaskell/ruhaskell/wiki
Cheese
но здесь точно всё ок
Cheese
вот так сработало, но это немного странно пахнет, по-моему f a@A{x, ..} = A{x = x + 1, ..}; f B = B
A64m
не знаю, чего вы удивляетесь, информация о том, что проверилась "внешним" матчем во внутренний не передается же > foo xs@(_:_) = case xs of {(h:_) -> Just h}; foo [] = Nothing <interactive>:17:16: warning: [-Wincomplete-patterns] Pattern match(es) are non-exhaustive In a case alternative: Patterns not matched: []
Leonid 🦇
@qnikst а в катипе же нельзя поменять уровень месседжей у скрайба?. Типа по сигналу ставить DebugS?
Alexander
свой напиши и меняй
A64m
тест покрытия у матчинга очень тупой и полезность его сомнительна - потому его ворнинги по умолчанию и не включены
Cheese
x в матче лишний, кстати f A{..} = A{x = x + 1, ..}; f B = B
да, спасибо. в реальном коде уже сам поправил
A64m
> I'm currently working on an unofficial guide to GHC's extensions, aimed towards beginners who are wondering what the hell is going on. надеюсь он будет состоять из одной строки: ЧИТАЙ ГХЦ-МАНУАЛ!!1111 (совсем не надеюсь, на самом деле)
Dmitry
"Next 24 days of GHC Extensions" ?
Dmitry
"Honey moon of GHC Extensions" ?
Aleksei (astynax)
GHC Manual слишком большой, искать по нему сложно, если не знаешь названия расширения или хотя бы раздела, в котором искомое может быть. А помнить всё ещё сложнее
Влод
ну видимо подразумевается что нужно читать и перечитывать как когда-то страуструпа всем рекомендовали для плюсов
Влод
тип в какой-то момент эта мешанина текста заструктурируется
Aleksei (astynax)
Сомневаюсь
A64m
описание экстеншенов 200 страниц (причем все читать не надо), но хаскелисты лучше прочитают больше страниц всякого говна, которое напишет кто угодно, только не тот, кто что-то знает про экстеншены
Dmitry
Надо экспертную систему делать. Вопросно-ответную. Задаёт ряд наводящих вопросов, выдаёт нужные расширения. - хотите ли вы не писать T.pack "some string", а сразу фигачить "some string" - нууу, наверное, да. - попробуйте OverloadedStrings
Евгений
GHC Manual разросся и стал очень неудобным
Dmitry
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html
Dmitry
Всего-то ~100 расширений
Евгений
Нужен какой-нибудь метамануал по экстеншонам
Dmitry
Даже можно без экспертной системы обойтись
A64m
конечно посоветовали сразу шизовый материал Диля, где, к примеру, есть адовая таблица где экстеншены классифицированы на "дженерал" и "специалайзед"
Dmitry
Дайте ссылку
A64m
за публикацию этой ссылки я бы банил, например
Dmitry
Ну ладно :)
A64m
где, к примеру, лямбда-кейс классифицирован как "общий" а мульти вей иф как "специализированный" или гадт дженерал, а семейства специалайзед
Dmitry
А что значит, общий/специализированный?
A64m
да ничего не значит, как видно из примеров. Диль поехавший просто
Евгений
Мне кажется расширения сложно делить как-то. Ну то есть яркие примеры расширений системы типов и синтаксического сахара. Но это не покрывает всё, а во вторых грань тонка
A64m
или списк "опасных" экстеншенов где в одной куче реально опасные вроде OverlappingInstances IncoherentInstances недоделанные, которые могут убрать в любой момент ImpredicativeTypes задепрекейченые но безвредные DatatypeContexts и просто безопасные AllowAmbigiousTypes
Leonid 🦇
ой, я и не знал что в ghc есть BinaryLiterals
A64m
еще есть экстеншоны которые он называет "историческими" вроде DatatypeContexts. Но там почему-то DoRec и TraditionalRecordSyntax
Dmitry
0x0.1p12 is the same as 256
A64m
как вам такой перл, к примеру? > TraditionalRecordSyntax - Traditional record syntax was an extension to the Haskell 98 specification for what we now consider standard record syntax.
Dmitry
Оно ж как бы встроено по умолчанию?
Dmitry
И надо -XNoTraditionalRecordSyntax
A64m
ну понятно, потому что это новый экстеншон, который сделали, когда новые рекорды для хаскеля обсуждались лет 5 назад - чтоб можно было стандартные рекорды выключать - все что диль написал про него - полная ахинея
A64m
каких только литералов не понаделали уже, а сстроковых литералов, в которых эскейпить ничего не надо до сих пор нет
Dmitry
А как не эскейпить-то?
Alexander
и никакой мануал от этого не спасет
A64m
А как не эскейпить-то?
ну как в F# каком-нибудь есть If preceded by the @ symbol, the literal is a verbatim string. This means that any escape sequences are ignored, except that two quotation mark characters are interpreted as one quotation mark character. Additionally, a string may be enclosed by triple quotes. In this case, all escape sequences are ignored, including double quotation mark characters.
Dmitry
Годно
Alexander
о у нас такие экспертные системы в блогах и твиттерах живут
A64m
Addressing Functional Dependencies and instance overlaps and their interplay just doesn't fit with the direction of travel for GHC. Indeed the difficulties and disfluencies in GHC's behaviour wrt those extensions -- that were apparent from over a dozen years ago -- have received no love. If I'm frank with myself: GHC-Haskell is no longer the language through which I became enthusastic about Functional Programming. Still the records system is an embarrassment. (How many attempts have there been to make progress?) Meanwhile GHC has become bloated with abstruse features. Most of those features are of small benefit to me. Each seems to have come with significant downsides in added complexity and impenetrable error messages -- even when I didn't think I was using that extension. QuantifiedConstraints, which I had high expectations for, has turned out a damp squib. The pointy-heads have taken over the asylum. Now that I've discovered it's not so difficult to hack (some) compiler, I'm going back to a simpler Haskell vintage ~2006.
Alexander
это кто?
Leonid 🦇
этот, который hugs хотел
A64m
не тот
A64m
Клайден, который AntC
Leonid 🦇
так он же вроде больше не релевантен для "комьюнити"
A64m
не понял
Leonid 🦇
AntC библиотек не пишет, в ghc не контрибутит. не?
A64m
он активный участник обсуждений же
Leonid 🦇
как Картер?
A64m
да, вроде того
Евгений
Норм, вспоминается сразу спор об уставе на втором съезде РСДРП
Anonymous
@argenetix будет жить. Поприветствуем!
Vladislav
Клайден, который AntC
Кто он вообще за пределами этих обсуждений?