@haskellru

Страница 1264 из 1551
Дмитрий
13.06.2018
16:18:59
Названия запоминать я конечно не буду

A64m
13.06.2018
16:19:07
нормальных - понятие растяжимое

есть containers, есть fgl

Дмитрий
13.06.2018
16:19:31
Ну, скажем, подходящих под задачу автора

Google
Дмитрий
13.06.2018
16:19:48
Я просто с похожими целями смотрел

Просто по списку категорий (не тех) прошёлся с поиском и смотрел что есть

Timofey
13.06.2018
16:23:17
пока у меня смутное подозрени, что algebraic-graphs позволит граф "собрать", а fgl - "разобрать". Осталось найти третью либу, которая на лету сконвертит один граф в другой =)

Andy
13.06.2018
16:23:26
а на тайп левеле можно изобразить вектор (или список) , который состоит из элементов нескольких типов, но так, что каждый из элементов встречается ровно один раз? порядок элементов не определен, размещаются в этом списке в любом порядке, но главное только один раз.

Andy
13.06.2018
16:31:14
спасибо. в целом я думал, про тайп-левел сеты. но не был уверен, что все это можно увязать. а можно гдето почитать про ограничения type-level в хаскело-окамловых типов языков? что нельзя изобразить на тайплевеле , но можно в языке с полноценным завтипами?

A64m
13.06.2018
16:32:19
пока у меня смутное подозрени, что algebraic-graphs позволит граф "собрать", а fgl - "разобрать". Осталось найти третью либу, которая на лету сконвертит один граф в другой =)
и контейнеры и фгл позволяют граф собирать, просто не так красиво как в случае с algebraic-graphs чтоб конвертировать вторые в первые надо или из интмапов которые умеет algebraic-graphs делать конвертировать или написать интерпретатор (инстанс класса Граф)

Denis
13.06.2018
16:33:44
ну, справедливости ради это уже и в хаскеле можно, только не шибко удобно

A64m
13.06.2018
16:34:10
спасибо. в целом я думал, про тайп-левел сеты. но не был уверен, что все это можно увязать. а можно гдето почитать про ограничения type-level в хаскело-окамловых типов языков? что нельзя изобразить на тайплевеле , но можно в языке с полноценным завтипами?
в языке вроде хаскеля можно примерно все то что и в языке с завтипами, но костыльно, многословно (все надо писать по три раза для значений, для типов и для синглетонов) и медленно, потому что нельзя выкинуть все доказательства, их надо в рантайме выполнять

это отличается от рекордов только сахаром?
поверх этой библиотеки сделана минимум одна рекордовая - буккипер

Google
Andy
13.06.2018
16:39:46
в языке вроде хаскеля можно примерно все то что и в языке с завтипами, но костыльно, многословно (все надо писать по три раза для значений, для типов и для синглетонов) и медленно, потому что нельзя выкинуть все доказательства, их надо в рантайме выполнять
а есть может есть какаято статья в закладках, позволяющая подробней вникнуть в тайп-левел? или нужно штудировать тапл подробно и без этого никак (хотя там может этого и нету) ? Чтото читал , вроде понятно на простых примерах, но общей картины нету

Andy
13.06.2018
16:44:17
спасибо. хм, кстати вижу в телеграме уже сохранено, видимо уже когдато от Вас сохранял на будущее) сейчас начну читать

A64m
13.06.2018
16:44:18
http://homepages.inf.ed.ac.uk/slindley/papers/hasochism.pdf

там проблемы и ограничения обычно снимаются в новых версиях, так что трудно найти что-то актуальное

Andy
13.06.2018
16:48:41
там проблемы и ограничения обычно снимаются в новых версиях, так что трудно найти что-то актуальное
спасибо! ну мне бы в целом "грокнуть" правильные паттерны мышления в подобных задачах кодирования

A64m
13.06.2018
16:48:50
надо смотреть библиотеку https://github.com/goldfirere/singletons это передний край всего этого ужаса

да там нету правильных паттернов. есть "старая школа" тайплевел-пролога как тут http://www.cse.chalmers.se/~hallgren/Papers/hallgren.pdf

есть более современная, как в пейперах выше, она сейчас только формируется

ну и можно посмотреть видео докладов Richard A. Eisenberg и Stephanie Weirich

Index
13.06.2018
17:09:05
Какой же парсер у GHC нереальный

Что он делает для обработки ~ это просто тихий ужас

A64m
13.06.2018
17:10:18
хорошо что не ленятся и используют один символ много для чего

Index
13.06.2018
17:11:24
Ну вообще ambiguity там нет, можно отличить, когда инфиксно, когда префиксно ~ используется

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

A64m
13.06.2018
17:12:15
так наверное потому что он сначала только префиксный был

а инфиксным стал относительно недавно

Index
13.06.2018
17:12:35
Т.е. если написать a ~ b, это на самом деле App "a" (Lazy "b")

а инфиксным стал относительно недавно
Ну можно же по-человечески было делать его инфиксным

Google
Index
13.06.2018
17:13:28
Вместо превращения App "a" (Lazy "b") в OpApp "a" "~" "b"

A64m
13.06.2018
17:14:30
а в случае какого-нибудь ( ~a ?

Index
13.06.2018
17:14:56
Что это за случай с незакрытой скобкой?

A64m
13.06.2018
17:18:53
ну она дельше закрывается, конечно

Index
13.06.2018
17:26:02
Кстати, да, вот собираются же мерджить type/term парсеры. Возьмем (~a). Это operator section или laziness annotation?

Да не просто собираются, а уже 2 недели 2 человека трудятся фултайм.

где человек = студент Эйзенберга

A64m
13.06.2018
17:27:58
да так же как сейчас для велью парсера отличают a ! b от !b и b# c от b # c

тут-то ничего нового как раз

Index
13.06.2018
17:29:12
! whitespace sensitive что ли?

A64m
13.06.2018
17:29:24
да

Index
13.06.2018
17:29:43
Дайте мне другой язык с нормальным синтаксисом

A64m
13.06.2018
17:30:16
а как в нормальном будет?

Index
13.06.2018
17:31:01
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help Prelude> f !a = a Prelude> :info f <interactive>:1:1: error: Not in scope: ‘f’ Prelude> :info (!) (!) :: p1 -> p2 -> p2 -- Defined at <interactive>:1:3

ничего тут не отличается

А, надо -XBangPatterns включить

A64m
13.06.2018
17:31:47
так банги не включены

все эти вайтспейс-сенситив штуки из-за синтаксиса, который добавили в расширениях

Index
13.06.2018
17:32:50
а как в нормальном будет?
вот так вот http://www.cse.chalmers.se/~nad/publications/danielsson-norell-mixfix.pdf

A64m
13.06.2018
17:33:07
меджик хэш, лейблы, отрицательные литералы и т.д.

Google
Index
13.06.2018
17:36:50
а еще "в нормальном" не будет отдельных неймспейсов для типов/тёрмов

и не придется писать '[a] вместо [a]

потому что [a] это List a

A64m
13.06.2018
17:37:31
но это уродливо же, когда List a

Index
13.06.2018
17:37:57
а NonEmpty a ты как бы хотел писать?

[a]+ какой-нибудь небось

A64m
13.06.2018
17:38:41
в нормальном языке не должно быть никакого NonEmpty

но вообще просто a+

Index
13.06.2018
17:40:35
a* тогда для списков?

A64m
13.06.2018
17:40:49
ну да

Index
13.06.2018
17:41:15
Ну пусть так будет.

A64m
13.06.2018
17:42:41
хотя мне нравится, как в хаскеле сделано, что конструктор и тип одноименные, жаль такое терять

так что разные неймспейсы для них это фича

? animufag ?
13.06.2018
17:45:12
Юнит в идрисе тоже одинаковый

A64m
13.06.2018
17:46:59
ну в языке с перегрузкой можно сколько угодно всего одноименного в одном неймспейсе иметь

типы-то различаются у Foo :: a -> Foo a и Foo :: Type -> Type

но перегрузка это адище,

Index
13.06.2018
17:49:10
Ну типы и у [] различаются

A64m
13.06.2018
17:49:17
я бы не стал связываться с таким

Index
13.06.2018
17:49:24
[] :: forall a. [a] vs [] :: Type -> Type

Google
A64m
13.06.2018
17:50:23
ну да, если есть перегрузка, то можно называть одинаково конструкторы и конструкторы типов в одном неймспейсе

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

Index
13.06.2018
17:50:49
В нормальном языке ' быть не должно

A64m
13.06.2018
17:51:12
это неприятно, но на такие жертвы можно пойти

Index
13.06.2018
17:51:35
Уж лучше List писать

A64m
13.06.2018
17:51:50
тем более в хаскеле, который нормальным на тайплевеле если и будет, то в далеком будущем, и такого кода в нем будет минимум

т.е. на один ' тысячи List-ов будут

Ilya
13.06.2018
17:54:18
Прекрасный хаскель будущего

A64m
13.06.2018
17:54:31
короче говоря, в хаскеле платить уродствами на тайплевеле за удобства на велью-левеле нормально

просто сейчас тайплевел совсем адище, его надо хоть в немного вменяемое состояние привести

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

Index
13.06.2018
18:05:57
да кому тёрм-левел нужен вообще

Антон
13.06.2018
18:20:19
Hithroc
13.06.2018
18:31:34
Kirill
13.06.2018
19:16:42
ну надож перл сделать, куда без регекспов

IC
14.06.2018
08:30:08
Какое расширение даёт писать Type благословенный вместо б-гмерзкой *?

Denis
14.06.2018
08:30:43
GHC 8

IC
14.06.2018
08:31:13
Not in scope: type constructor or class ‘Type’

kana
14.06.2018
08:31:22
{-# LANGUAGE DataKinds #-} import Data.Kind

Страница 1264 из 1551