
A64m
14.06.2018
08:32:48
и еще долго будет

IC
14.06.2018
08:37:47
насколько Trees that grow переносимо на личные rpn-калькуляторы? не оверкил ли оно для всего, что не является GHC?

Timofey
14.06.2018
08:41:51
А вот такой ещё вопрос: есть тип T с кайндом * -> *. А есть класс C, который требует кайнд параметра вида * -> * -> *. Я хочу сделать instance C T, как заигнорить одну из звёздочек в кайнде?
или сказать, что первые две звезды будут одним и тем же типом

Google

IC
14.06.2018
08:43:00

Pineapple
14.06.2018
08:43:01
А откуда такое неприятие звёздочки?

Timofey
14.06.2018
08:43:56

IC
14.06.2018
08:44:49
но с чего ты взял, что оно тогда будет туда влезать?

Yuriy
14.06.2018
08:45:21

A64m
14.06.2018
08:46:02
очень странно, что то, от чего отказались для обычных типов использовали для кайндов

Timofey
14.06.2018
08:54:16

A64m
14.06.2018
08:55:52
newtype Foo a b = Foo (T a)

kana
14.06.2018
08:56:08
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
import Data.Kind
class C (f :: Type -> Type -> Type)
data X a = X a
newtype X' a b = X' (X a)
instance C X'

Timofey
14.06.2018
08:56:09
о, точно, спасибо

kana
14.06.2018
08:57:35
еще многим (мне в том числе) он сначала давал неверную интуицию как о wildcard - то есть каинд вообще всех типов (а оказывается только возможнонаселенных)

Google

A64m
14.06.2018
08:59:27
да и не всех возможнонаселенных

Pineapple
14.06.2018
09:00:45
По мне они совершенно идентичны с точки зрения читаемости. Чисто графически звёздочка мне импонирует даже больше, если бы она не конфликтовала с операторами

IC
14.06.2018
09:01:51
Почему звёздочка, а не, там %?

A64m
14.06.2018
09:01:56
проблемы с читаемостью и у меня не было
а почему %?

IC
14.06.2018
09:02:28
а почему *?

Pineapple
14.06.2018
09:02:49

A64m
14.06.2018
09:02:56
наверное, из-за миранды и старого эмеля

Pineapple
14.06.2018
09:03:04
Олсо почему Type, а не Ty?

IC
14.06.2018
09:03:07
> выглядит симпатичней
привычней

A64m
14.06.2018
09:03:10
правда там звездочки - это параметры

IC
14.06.2018
09:03:22

A64m
14.06.2018
09:03:47
вообще не очень люблю сокращения такого типа

Pineapple
14.06.2018
09:04:07
Ну вопрос был троллирующий

A64m
14.06.2018
09:04:31
T или там U или S
U -> U -> U
но можно же будет самому написать type U = Type и все

kana
14.06.2018
09:06:55
U мне нравился вариант
довольно распространен

Google

Alexander
14.06.2018
09:08:25
T хорошо, притащит много окамлеров

IC
14.06.2018
09:08:44

Alexander
14.06.2018
09:09:12
это к оо-хаскель
и ете

A64m
14.06.2018
09:09:28
не, окамлерам такое не понравится

IC
14.06.2018
09:09:40

A64m
14.06.2018
09:10:55
по окамловски было бы
import qualified Data.Kinds as Kind
-- и дальше
Kind.T

IC
14.06.2018
09:11:20
require Data.Kinds; Kinds.T

A64m
14.06.2018
09:11:52
тогда уж Kinds.t
но в хаскеле так нельзя, так что не понравится все равно

Alexander
14.06.2018
09:15:12

Denis
14.06.2018
09:15:36
звезда норм
чем вам звезда не угодила
она на три символа эффективнее

Oleg
14.06.2018
09:15:48
T тоже фиговая

IC
14.06.2018
09:15:55

Oleg
14.06.2018
09:15:59
типа намёк на Top который ()

Denis
14.06.2018
09:16:29
$ -> $ это для успешных

IC
14.06.2018
09:16:30

A64m
14.06.2018
09:17:02
почему не % или не $?
видимо потому что в миранде и старом эмеле писали сигнатуры вроде (* -> **) -> [*] -> [**]

Google

A64m
14.06.2018
09:17:20
ну и кайнд ? и сейчас есть

Oleg
14.06.2018
09:17:23
Но, если я правильно помню, жалобу на звезду, там никакой символ не устроит

IC
14.06.2018
09:17:35

A64m
14.06.2018
09:17:44
ну это были параметры, т.е. в каком-то смысле интуиция про вайлдкард правильная, именно такая и планировалась исторически

IC
14.06.2018
09:24:13
если планировалась, но не получилась, то и не правильная ведь

A64m
14.06.2018
09:26:55
да, идея была очень плохая

IC
14.06.2018
09:27:21
и это теперь такое напоминание о первородном грехе ФП языков. помним, скорбим..

A64m
14.06.2018
09:27:25
они и в пейперах часто вместо этих звездочек греческие буквы писали

IC
14.06.2018
09:34:15
в коде до сих пор пишут, транслитом

Artem
14.06.2018
09:34:45

A64m
14.06.2018
09:35:36

IC
14.06.2018
09:35:58

A64m
14.06.2018
09:42:41
первоначально-то эти кайнды-звездочки вообще не языковой конструкцией а конструкцией в сообщениях об ошибках, только в относительно современное время их стало можно аннотировать.
сейчас и другую конструкцию из сообщений компилятора в язык продвигают - {} в forall-ах

Pineapple
14.06.2018
09:46:47
А что за {}?

Leonid
14.06.2018
09:47:37
а как в серванте делать редирект?

Aleksey
14.06.2018
09:47:46
Сложна :)

Leonid
14.06.2018
09:47:55
Raw?

Aleksey
14.06.2018
09:49:25
Ща поищу. Мы делали у себя

Leonid
14.06.2018
09:49:55
https://gist.github.com/alpmestan/757094ecf9401f85c5ba367ca20b8900 вот такое нашел

Google

Евгений
14.06.2018
09:50:14

A64m
14.06.2018
09:50:34
А что за {}?
https://github.com/ghc-proposals/ghc-proposals/pull/99

Yuuri
14.06.2018
09:52:00
Как сделать частичное применение для второго параметра конструктора типа?

Aleksey
14.06.2018
09:52:43

A64m
14.06.2018
09:53:20

Leonid
14.06.2018
09:54:01
До чего техника дошла

IC
14.06.2018
09:54:12

Yuuri
14.06.2018
09:55:35

A64m
14.06.2018
09:55:53
никак

Alexander
14.06.2018
09:57:12

Pineapple
14.06.2018
09:57:58
Пластмассовый го победил

Евгений
14.06.2018
09:58:35
А что оказалось сильней?

Pineapple
14.06.2018
09:58:59
Не идёт на ум пока
А!
Пластмассовый го победил,
Фронтенд оказался сильней

Alexander
14.06.2018
10:01:17
не сходится
если фронтенд оказался сильнее то го проиграл

Pineapple
14.06.2018
10:01:58
Так го на бакэнде

Alexander
14.06.2018
10:02:34
поэтому и проиграл

IC
14.06.2018
10:02:59
@astynax тут классику забыли