
A64m
15.07.2018
17:59:30
> :{
| min' :: Ord a => Maybe a -> Maybe a -> Maybe a
| min' = coerce $ (<>) @(Maybe(Min a))
| :}
<interactive>:54:34: error: Not in scope: type variable `a'

Владислав
15.07.2018
18:00:44

Антон
15.07.2018
18:02:22

A64m
15.07.2018
18:03:52

Google

Владислав
15.07.2018
18:04:12
thanks!

Pineapple
15.07.2018
19:46:19

A64m
15.07.2018
19:47:03
а написать тип какой надо для подбора словарей и потом какой надо для использования нельзя что ли?

Pineapple
15.07.2018
19:47:51
Можно, но это надо говлову включить

A64m
15.07.2018
19:52:21
ну тут вроде надо головы как минимум одинаково, чтоб придумать что надо моноид для Maybe (Min a) дальше уже не надо

Yuriy
15.07.2018
20:09:53
@qnikst к тебе комментарий https://www.youtube.com/watch?v=K4gDf1jCJEM&lc=Ugwd_kJRREezGu-P7ZZ4AaABAg

dimiii
15.07.2018
20:21:55

Dmitry
15.07.2018
20:43:54

Андрей
15.07.2018
21:07:15
функторами же

Lev
16.07.2018
05:03:17
“Haskell is very simple. Everything is composed of Functads which are themselves a Tormund of Gurmoids, usually defined over the Devons. All you have to do is stick one Devon inside a Tormund and it yields Reverse Functads (Actually Functoids) you use to generate Unbound Gurmoids.” (c) @niftierideology

Dmitry
16.07.2018
05:09:52
И ведь правда, я именно так и программирую.

Alexander
16.07.2018
08:12:30

IC
16.07.2018
09:09:19
как сделать функцию (или класс) вида Not (Show a) => a -> ()?

Google

Aleksey
16.07.2018
09:11:22
Т.е. ты хочешь расконстреинт?
"освобождение"
или "попущение"

Alexander
16.07.2018
09:11:43
гарантию отсутствия инстанса
я знаю как для конкретных типов такое сделать
и.е. придется явно перечислить

A64m
16.07.2018
09:12:22
никак без потенциально очень больших проблем

Pineapple
16.07.2018
09:12:23
Как?

Alexander
16.07.2018
09:12:46
через closed type family TypeError
у серокелей в predule их было что-то такое чтобы Exception запрещать
или в гайдах IOHK

Ilya
16.07.2018
09:14:13
C QuantifiedConstraints и если ввести контрейнт False, для которого нельзя сделать инстанс, наверное можно будет написать традиционное (Show a => False) => a -> ()
только часть a -> () как-то не особо осмысленно выглядит, в чистом языке это изоморфно ()

kana
16.07.2018
09:18:33
жаль хаскель не чистый и там это имеет смысл

IC
16.07.2018
09:18:40
это не важно
а с тайпклассами такое прокатит?
instance (Show a => False, Show b, Show c => False) => Foo a b c where
foo :: b -> String
ну и чтобы гхц сам выбрал подходящий

Ilya
16.07.2018
09:23:29
я хз, я QuantifiedConstraints еще не пробовал

Alexander
16.07.2018
09:24:57
я думаю не взлетит

Google

Alexander
16.07.2018
09:25:07
но я не пробовал

Ilya
16.07.2018
09:25:40
Да и про добавление специального констрейнта False я ничего не слышал, так что сорри, если дал надежду, мой комент выше был в большей степени умозрительным

IC
16.07.2018
09:26:58
https://hackage.haskell.org/package/constraints-0.10.1/docs/Data-Constraint.html хм...

Ilya
16.07.2018
09:29:39
а, ок, Bottom уже есть

IC
16.07.2018
09:30:04
но будет ли им пользоваться солвер? просто кинуть typeerror не интересно

Alexander
16.07.2018
09:31:11
не будет это имхо нормально работать
хотя с QuantifiedConstraints шансы увеличиваются, надо б его помучать

IC
16.07.2018
09:32:13
есть класс с тремя аргументами и к нему есть ровно три инстанса - выбирай первый аргумент, второй, третий.
хочется чтобы оно без аннотаций само выбирало какой из них подходит. потому что с аннотациями проще просто три функции написать.

Alexander
16.07.2018
09:33:42
можно попробовать, но мне кажется что игра свечь не стоит
а какой алгоритм выбора?

IC
16.07.2018
09:34:35

A64m
16.07.2018
09:35:16
вообще-то предполагается, что написание кода, поведение которого меняется от добавления инстанса в хаскеле делается только с помощью багов и дыр, которые компрометируют работоспособность тайпклассов

IC
16.07.2018
09:35:21
Show для примера. на самом деле там скорее instance (???) => Foo [a] b c where — "найди список"

Alexander
16.07.2018
09:35:32
а если Show есть у первого и второго?

IC
16.07.2018
09:35:49
пользовательский

Alexander
16.07.2018
09:36:16
так, а откуда список появился?

kana
16.07.2018
09:36:18

IC
16.07.2018
09:36:55

Google

Alexander
16.07.2018
09:37:18
ну поиск списка это проще чем отрицательный констрецнт
особенно обобщенный

IC
16.07.2018
09:41:35
куда копать?

A64m
16.07.2018
10:31:48
> I'm disappointed that Michael's concerns regarding multiple public libraries were completely disregarded
опять нехорошие кабалисты фичи добавляют не послушав сноймана
Гонзалес не хочет в рулевой комитет выдвигаться - повезло!

Index
16.07.2018
10:48:54
где это читать

A64m
16.07.2018
10:52:40
https://www.reddit.com/r/haskell/comments/8yz92h/a_year_into_backpack_inside_2455d/

Leonid
16.07.2018
10:53:49
это поди опять тот самый тролль

Admin
ERROR: S client not available

A64m
16.07.2018
11:01:25
сейчас что-то весело комментарии против стека плюсовать стали
> So fpco decided to reinvent cabal-install instead of contributing to its development and now they're realizing the costs of NIH? Too bad!
плохо придется правда хаскелистам вообще а не стекоразработчикам. им теперь можно плевать на все, заметное число твсе равно будет стеком пользоваться, а значит нормального распространения бекпак не получит, ведь особых перспектив поддержки в стеке нету
так что снойман фактически удушил модули в колыбели, отличная работа!

Leonid
16.07.2018
11:11:40
у бекпака UX так себе в любом случае

A64m
16.07.2018
11:12:32
для энкодинга тайпклассов или чего-то вроде да, для того, для чего он планировался - норм.

Index
16.07.2018
11:13:12
сейчас, наткнувшись на баг в Бэкпеке, узнал, какой бардак с package id в GHC
я-то думал там красиво всё сделали, а вот нет

A64m
16.07.2018
11:13:21
но понятно что всегда захотят использовать не для того, для чего фича планировалась, так что конечно надо нормальный синтаксис для хаскельных файлов делать
по крайней мере недовольных тем, что его нет в обсуждении полно

Yuriy
16.07.2018
11:20:18

Google

Ignat
16.07.2018
11:23:16
и в крестах можно
вот и обнаружены 2 языка с лучшими системами типов

Yuriy
16.07.2018
11:27:23

Ignat
16.07.2018
11:28:08
ну всяческих type_traits можешь написать каких душе угодно

Дед Пегас
16.07.2018
11:34:15
Правда, выглядить это будет просто адова.

A64m
16.07.2018
11:39:33
но, конечно, довольно забавно, что (потенциальные) пользователи первой практической имплементации (недо) миксинов жалуются на UX по сравнению с функторами, хотя миксины как раз придумывались для улучшения UX функторов.

Антон
16.07.2018
11:39:40

Dmitry
16.07.2018
12:11:01

Timofey
16.07.2018
12:11:16
А вообще появились вменяемые тьюторилы по бакпаку? Когда его только анонсировали, была куча восторженных бессмысленных постов, но ни один даже и не попытался ответить, зачем бакпак нужен и какую проблему он решает

A64m
16.07.2018
12:13:40
не понимаю, о каких постах речь

Timofey
16.07.2018
12:15:02
я тогда гуглил этот бакпак, попадал только на всякие "о да, я буду это юзать" на реддите и в личных стандалоун-бложиках

Dmitry
16.07.2018
12:17:20

Timofey
16.07.2018
12:19:16

Alexander
16.07.2018
12:19:35

Dmitry
16.07.2018
12:19:52

A64m
16.07.2018
12:20:10
есть мотивация в пропозале https://github.com/ezyang/ghc-proposals/blob/backpack/proposals/0000-backpack.rst#motivation
есть туториал в янговском диссере https://github.com/ezyang/thesis/releases/download/rev20170925/main.pdf

Dmitry
16.07.2018
12:20:23
Хотя я что-то припоминаю про слайды, надо @int_index спросить...

Index
16.07.2018
12:21:43
Вроде я нарисовал какие-то слайды пока ехал на поезде в Петербург, а потом перерисовывал их от руки на вайтборд
Исходников у меня не сохранилось точно

Евгений
16.07.2018
12:27:11
Меня в бекпаке беспокоит только одно — как чётко отделить юзкейсы бекпака от тайпклассов? По наличию законов?