Size: a a a

2021 October 14

DB

Danil Braun in Haskell Start
Сейчас они комментируют решения даже
источник

JS

Jerzy Syrowiecki in Haskell Start
там и начинающий в вопросе был
источник

DB

Danil Braun in Haskell Start
Ну после курса Москвина мне кажется будет уже скучно. А вот перед курсом самое то может быть.
источник

JS

Jerzy Syrowiecki in Haskell Start
курсы Москвина хорошо бы прорешать
источник

Д

Дмитрий in Haskell Start
Так я и решаю
источник

JS

Jerzy Syrowiecki in Haskell Start
здорово!
источник

Д

Дмитрий in Haskell Start
Прекрасно!
источник

SG

Serge S. Gulin in Haskell Start
Чето я совсем запутался в DataKind’ах. Хочется вот чего:

data A = C | B | D

Сделать функцию, которая возвращает Maybe C и ещё функцию которая возвращает Maybe B. Взять результаты этих функций и получить какой-нибудь [Maybe A], который уже можно будет впоследствии сжать до [A].

Я тут понимаю, что путаю тайпы и каинды, и выше — это лишь иллюстрация. Но как к такому придти? Т.е. хочу написать функции, которые возвращают метки (чтобы они были выражены через типы, да), а потом их результаты сложить вместе и получить список более общего типа от всех этих меток.
источник

SG

Serge S. Gulin in Haskell Start
https://www.schoolofhaskell.com/user/k_bx/playing-with-datakinds нашёл вот это, пытаюсь разобраться
источник

SG

Serge S. Gulin in Haskell Start
Настораживает, что человек в итоге всё равно не пришёл к тому, что хотел.
источник
2021 October 15

SG

Serge S. Gulin in Haskell Start
Более практичное применение выше — это работа с ролями пользоваталей. Пользователь может иметь несколько ролей, в зависимости от контекста. Функции с Maybe B (или C) — это своего рода проверки на принадлежность пользователя к конкретной роли. Когда мы проверим пользователя на принадлежность ко всем ролям, то получим список допущений [Maybe A], который в последствии можно сжать, выкинув Maybe и получить актуальный список ролей.
источник

И

Иван in Haskell Start
Я конечно могу ошибаться но помойму датакаинды создают тип для коснтруктора данных, но это пустой тип, без значений. Поэтому я думаю в Maybe 'C будет мало смысла
источник

[

[BRM]White Rabbit in Haskell Start
да
источник

[

[BRM]White Rabbit in Haskell Start
λ> :k 'True
'True :: Bool
λ> :t True
True :: Bool
λ> :k Bool
Bool :: *
λ> :{
> x :: Bool
> x = True
> :}
λ> x
True
λ> :{
> y :: 'True
> y = True
> :}

<interactive>:20:6: error:
   • Expected a type, but ‘'True’ has kind ‘Bool’
   • In the type signature: y :: 'True
источник

[

[BRM]White Rabbit in Haskell Start
термы могут быть только у того, что на тайплевеле имеет каинд * (ну или Type)
у 'True каинд не *, а Bool, поэтому мы не можем населить 'True термом
источник

[

[BRM]White Rabbit in Haskell Start
более того, мы не можем написать Maybe 'True потому что Maybe имеет тип (каинд) * -> *, а не Bool -> *
источник

[

[BRM]White Rabbit in Haskell Start
Дата каинды нужны для дальнейших типострадашек, а не сами по себе
источник

SG

Serge S. Gulin in Haskell Start
Что же делать? 😄
источник

[

[BRM]White Rabbit in Haskell Start
Учить дальше!
источник

SG

Serge S. Gulin in Haskell Start
ну куда хоть учить-то если хочется вот роли у пользователей как выше
источник