Maxim
Но если не влияет, то это даже удобнее (наверное)
Anonymous
допустим у нас тайпкласс c a и к нему имплементировали t1, и есть конструктор data c a => t a
A64m
может T a ?
Anonymous
ну в хаскеле да
A64m
ну они рабортают, но только при конструировании, при матчинге словарь получить нельзя
A64m
так что эти фича обоснованно считается бесполезной
Anonymous
да я не про хаскель (в том же расте постоянно юзаются)
Anonymous
то есть ограничения это отдельная концепция и записывается рядом
Зигохистоморфный
@A64m_qb0 что думаешь? https://github.com/chrisdone/chaotic-ghc
A64m
да я не про хаскель (в том же расте постоянно юзаются)
это не аналог обсуждаемой хаскельной фичи, а другой
Anonymous
то есть ограничения это отдельная концепция и записывается рядом
наверное теоретически было бы красивее если бы они были связаны
A64m
ну они связаны, но не так
Anonymous
ага
A64m
в корке, правда, их нет
Anonymous
а как констрейнты обычно записывают
A64m
где?
Anonymous
в пейперах всяких
Anonymous
на википедии не нашел 🤔
A64m
в сигнатурах так и пишут Q => в правилах Q; Г |- например
A64m
> I think I have come up with fairly intuitive and lightweight syntax to resolve this ambiguity: data T = T f T 5 -- T is term-level (just like today) f (::T) 5 -- T is type-level ЛЕГКОВЕСНЫЙ
Aliester
Выглядит как перл
Alexander
'T конечно сложно и непонятно
Alexander
::T лучше
A64m
моя классификация легковесности синтаксиса: вайтспейс - легковесный один символ - тяжеловесный два символа - НЕЙТРОНИЕВЫЙ четыре символа - ???
Alexander
это же очевидно!
Alexander
о ещё и скобочки же
Alexander
это небось лиспер предлагал
Alexander
у них скобки в минус идут
Alexander
() - -2 :: + 2 итого 0
Alexander
а меньше 0 символов очевидно не сделать
A64m
напоминает чумовой синтаксис из пропозала аналога !-нотации в идрисе (<- a) делающий синтаксис полностью неюзабельным, зато "интуитивным" (раз в жизни проигодится)
A64m
это предлагал @int_index
Alexander
кстати по сравнению с ' есть плюс
Alexander
автоматическим подсветкам не сносит крышу
Aliester
А есть неавтоматические?
A64m
есть
Kirill
а откуда пропоузал?
A64m
редактор который с обероном идет сам ничего не подсвечивает, но позволяет вручную отформатировать код
Kirill
про 4 точки
A64m
это не часть пропозала, а предложение в комментариях к вот этому вот https://github.com/ghc-proposals/ghc-proposals/pull/81
Зигохистоморфный
а чего Мейер покинул хаскелл? я так понял он был у истоков?
A64m
он написал про это пейпер http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.868&rep=rep1&type=pdf
Зигохистоморфный
мне просто интересна причина почему
A64m
мне просто интересна причина почему
> Instead of trying to convince imperative programmers to forget everything they already know and learn something completely new, I decided to infuse existing imperative objectoriented programming languages with functional programming features. As a result, functional programming has finally reached the masses, except that it is called Visual Basic 9 instead of Haskell 98.
Aliester
>VB 9 >functional programming
Зигохистоморфный
конечно такие вещи было бы круто) https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/Design
A64m
не круто, это в основном имплементировано, но никто не заметил даже
Зигохистоморфный
не круто, это в основном имплементировано, но никто не заметил даже
я про такой синтаксис getPersonId :: r { personId :: Int } => r -> Int getPersonId e = personId e
A64m
ну синтаксиса нет, но это не особо важно
A64m
более важная проблема имплементированного ORF что там какие-то убогие геттеры (без сеттеров даже), зачем они нужны? Линзы должны быть
A64m
если не считать конечно, что без прописывания сиротского инстанса ничего не работает вообще
Зигохистоморфный
ну если линзы на уровне ghc сделать, то так тормозить не будет при огромном количестве TemplateHaskell
A64m
там больше проблема в том, что СПЖ и автор ORF недолюбливают единственную разновидность линз, которыми кто-то хочет пользоваться
A64m
также Гендри делал ORF в несколько этапов и за время между введением лейблов и применением их для ORF написали кучу библиотек, которые работающий ORF бы сломал
A64m
так что ORF пришлось пожертвовать (общественность растревожилась, забурлила в комментариях к пропозолу и заклевала тот самый вышеупомянутый инстанс )
Quet
эт какие линзы спж недолюбливает так? )
A64m
ван-лаарховеновские, неабстрактные, т.е что всегда и понимается в хаскеле, когда говорят ЛИНЗЫ, недолюбливают они как раз вот эту неабстрактность
Quet
это то что кметтовская либа реализует?
A64m
не только кметтовская
Quet
ну кметтовская как самый известный пример
A64m
всякие микролинзы тоже, да и профункторные реализации неабстрактные
Artyom
ну конкретно микролинзы содраны у кметта целиком и полностью, но есть всякие lens-family-core, lens-simple, что-то там ещё и есть профункторные, да ни разу не видел, чтобы ими кто-то пользовался
A64m
не целиком, а с некоторых (ленз-фемели) наоборот кметтовские содраны, но так молниеносно, что те из блогпоста до хекеджа не успели долететь
A64m
в пурскрипте пользуются
Artyom
я бы не сказал, что “кметтовские содраны с lens-family”, потому что туда пошло дикое количество всяких оптимизаций и ad-hoc тайпклассов, которых в lens-family нет но внешнее апи нарочно такое же, да
A64m
ну идея О'Конноровская
Artyom
в пурскрипте пользуются
о, я вспомнил, что Олег (который другой Олег) ещё пилит для джаваскрипта какие-то линзы, которые тоже профункторные надо бы на них посмотреть
A64m
точнее началось все с МакБрайта и Паттерсона, потом Конал Эллиот почти изобрел Ван-Лаарховеновские линзы http://conal.net/blog/posts/semantic-editor-combinators потом Ван-Лаарховен изобрел их не почти, потом О'Конор их генерализировал до типосменяющих апдейтов, а Кметт из всего этого сделал библиотеку, ради которой хаскель и появился, теперь очевидно, все было не зря
Artyom
+
Зигохистоморфный
ну как таковых профункторных линз нет в хаскелл? вроде я только в purescript такие видел
Artyom
что значит “нет”? есть либы, вот например http://hackage.haskell.org/package/mezzolens afaik эту O'Connor написал как пруф-оф-концепт
Зигохистоморфный
ну это да
Зигохистоморфный
только погнила она
Зигохистоморфный
не обновляется