@haskellru

Страница 1347 из 1551
shadowjack
17.07.2018
14:09:40
Ещё критерий надобности нужен

A64m
17.07.2018
14:09:44
критерий академичности известен - "академик" пишет статьи которые публикуются в реферируемых журналах

Александр
17.07.2018
14:09:55
хаскель в дисере
Но ведь диссер можно защищать и чисто практический.

Google
A64m
17.07.2018
14:10:36
программисты под "практический" подразумевают не это обычно

Александр
17.07.2018
14:11:07
Если открыть Архив.Орг по направлению CS, то там полно такого, о чем даже не подумаешь, что можно написать статью в реферируемый журнал.

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

(Ну, не все)

A64m
17.07.2018
14:15:28
не понятно все еще с какими "академиками" вы собрались воевать

A64m
17.07.2018
14:16:47
у де гуза-то хоть понятно, он "академиками" назвал своих противников оопешников, просто потому что у программистов "академик" это что-то вроде "фошист", т.е. какой-то нехороший человек

Александр
17.07.2018
14:19:19
Не претендую на знаменосца в этой войне, а лишь моделирую ситуацию и обозначаю конфликт (который и так очевиден)

A64m
17.07.2018
14:19:34
мне не очевиден

(такой конфликт, по крайней мере)

или речь опять про конфликт снойманитов с кабалистами?

Александр
17.07.2018
14:20:26
Может быть

A64m
17.07.2018
14:22:24
так если всех кабалистов извести - снойманиты не смогут их часть работы выполнять

Google
Gleb
17.07.2018
14:27:09
Я тут вброшу немножко (http://www.aosabook.org/en/posa/warp-images/benchmark.png). В чем дело, собстно?

У них же модель работы с соединениями похожая

И вообще с I/O

Aleksey
17.07.2018
14:34:37
Майти, это warp, кстати. Про warp была давнишняя статья, в которой описывалось, почему оно быстро работает

Gleb
17.07.2018
15:15:09
?

A64m
17.07.2018
16:57:52
после того как @int_index топил за data Foo where type Foo type Bar type Baz может пожертвовать им не такая и плохая идея

Index
17.07.2018
16:59:30
ну начнем с того, что то, что ты написал, не может работать

я топил за data Foo = type Bar | type Baz | type Quux

либо data Foo where type Bar :: Foo type Baz :: Foo type Quux :: Foo

A64m
17.07.2018
17:00:13
да

Index
17.07.2018
17:00:18
а type Foo :: Foo работать не может

потому что это один неймспейс

A64m
17.07.2018
17:00:28
но такого уровня повторения я бы уже не вынес

Index
17.07.2018
17:00:49
Так писал бы дальше data Foo where Bar :: Foo Baz :: Foo Quux :: Foo

ты еще не видел наверное где я топил за type [] Int вместо [Int], чтобы не было конфликта с '[Int] (который надо писать как [Int])

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

A64m
17.07.2018
17:03:02
это дискуссионно по крайней мере, совсем не тот уровень ужаса

Google
Index
17.07.2018
17:03:43
это вообще-то одно и то же, явная квалификация неймспейса и там, и там

A64m
17.07.2018
17:05:38
data type или type data было бы одно и то же, бессмысленное повторение ключевого слова n раз там где все равно нету возможности выбирать неймспейс для каждого конструктора, а только для всех разом - вот в чем проблема

Index
17.07.2018
17:07:11
я был за выбор неймспейса для каждого конструктора

A64m
17.07.2018
17:08:56
т.е. Foo промоутится, Bar - нет, а Baz промоутится? в чем смысл этого-то?

Index
17.07.2018
17:10:40
да смысла вообще в двух неймспейсах нет, а если уж их два, то не понимаю, почему не дать fine-grained control

A64m
17.07.2018
17:11:52
потому что ничем кроме бессмысленного повторения одного слова n раз это все равно не закончится?

Oleg
17.07.2018
17:12:58
либо data Foo where type Bar :: Foo type Baz :: Foo type Quux :: Foo
я вот не пойму, это Вы тут скалу или скалу хотите в свои хашкели затащить

A64m
17.07.2018
17:15:15
не надо говорить во множественном числе, второго человека который такое хочет нет

Index
17.07.2018
17:17:05
я не знаю что там в Скале происходит, у них вместо тайпклассов имплиситы

дальше решил не изучать этот язык

A64m
17.07.2018
17:17:51
там при объявлении "АлгТД" ключевое слово повторяется бессмысленно n раз

Oleg
17.07.2018
17:17:55
дальше решил не изучать этот язык
теперь ты никогда не узнаешь, пощадил бы тебя дегуз или нет

final case class final case class

но уже есть игрушечная скала, где не так

A64m
17.07.2018
17:20:30
уже придумал как улучшить пропозал data Foo = promoted data constructor Bar | promoted data constructor Baz | promoted data constructor Quux

Index
17.07.2018
17:22:51
но я тут последние пару дней снова в коде GHC рыскаю, так что мне кажется лучше писать pm_d_con

так сразу понятнее о чем речь

Google
Oleg
17.07.2018
17:24:01
уже придумал как улучшить пропозал data Foo = promoted data constructor Bar | promoted data constructor Baz | promoted data constructor Quux
всё-таки для того, чтобы он был окончательно хорош, нужно запретить объявлять их не в GADT форме

Aleksey
18.07.2018
07:25:58
Если я имею data Tag = A | B | C class Foo (tag :: Tag) where f :: Bar я ведь не могу просто так сделать что-то вроде map (_ f) [A, B, C] ?

Или, скажем, написать такой кодек для Aeson, который позволит декодировать с учётом тега map _ [ByteString] :: [Maybe Bar]?

Потому как 'A и 'B - разные типы?

Или можно суммой вида data Taged = TA (Proxy 'A) | TB (Proxy 'B) | TC (Proxy 'C) выкрутиться?

Yuriy
18.07.2018
08:01:26
Потому как 'A и 'B - разные типы?
это вообще не типы, а разные конструкторы

Aleksey
18.07.2018
08:01:50
После промоута то разные "типы" же, не?

Yuriy
18.07.2018
08:02:16
ладно, выше уже обсудили

Admin
ERROR: S client not available

Yuriy
18.07.2018
08:02:21
вроде всё можешь

только просто так f не напишешь, потому что из Bar не выводится t :: Tag

можно f @tag

Index
18.07.2018
08:03:27
У тебя f :: forall (tag :: Tag). Foo tag => Bar, а для такого кода тебе надо f :: pi (tag :: Tag) -> Bar

Aleksey
18.07.2018
08:03:58
Вот интуитивно я как-то так и думаю

Index
18.07.2018
08:04:16
Ну pi-то нет без синглтонов

Aleksey
18.07.2018
08:04:35
можно f @tag
Это когда tag известен

Yuriy
18.07.2018
08:05:59
Это когда tag известен
можно передать снаружи как переменную, если он известен не здесь, а снаружи

Index
18.07.2018
08:06:00
Выкрутишься либо через data WithFoo where WithFoo :: Foo a => Proxy a -> WithFoo map (_ f) [WithFoo (Proxy @A), WithFoo (Proxy @B), WithFoo (Proxy @C)] либо через map (_ f) [toSing A, toSing B, toSing C] с синглтонами

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

Google
Index
18.07.2018
08:06:49
но смысл в том, что без нормального pi надо лифтать, либо открытым стилем (через констрейнт), либо закрытым (через синглтоны)

Aleksey
18.07.2018
08:09:19
Вот и я про прокси подумал

Index
18.07.2018
08:10:11
Так там главное не Proxy, а словарик Foo внутри. Proxy можно будет убрать, когда экзистенциальные переменные биндить научимся

https://github.com/ghc-proposals/ghc-proposals/pull/126

После этого пропозала я бы так написал: data WithFoo where WithFoo :: Foo a => WithFoo

В общем-то надо понимать, что это roundabout способ сделать то же самое, что [ f @A, f @B, f @C ] только вместо конечного Bar там весь словарь лежит. Это имеет смысл только если какие-то другие методы в словаре есть

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

Хм, а наверное toSing и помэппить можно.

Тогда даже map (_ f) [A, B, C] прокатит как изначально прошено

Yuriy
18.07.2018
08:13:45
кстати, если я хочу data использовать только на уровне типов, можно сказать компилятору, чтобы он принимал их спокойно без тиков?

Index
18.07.2018
08:14:01
недавно приняли пропозал, с которым сможешь так сказать

type data Foo = Bar | Baz | Quux

оно сразу в тайплевельный неймспейс попадёт

Index
18.07.2018
08:15:08
Да, что имени нет в скоупе

Yuriy
18.07.2018
08:15:24
отлично

Index
18.07.2018
08:16:11
@astynax как-то так думаю f' :: Tag -> Bar f' (toSing -> SomeSing (stag :: STag tag)) = case stag of SA -> f @tag SB -> f @tag SC -> f @tag матчинг можно TH-ом автоматизировать, см. sCases

Aleksey
18.07.2018
08:17:14
Хмм. Спасибо, поизучаю!

Index
18.07.2018
08:17:46
тогда будет что-то вроде f' :: Tag -> Bar f' (toSing -> SomeSing (stag :: STag tag)) = $(sCases ''Tag [| stag |] [| f @tag |])

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