@haskellru

Страница 1265 из 1551
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
А вот такой ещё вопрос: есть тип T с кайндом * -> *. А есть класс C, который требует кайнд параметра вида * -> * -> *. Я хочу сделать instance C T, как заигнорить одну из звёздочек в кайнде?
проигнорить никак. можно только приколотить конкретным типом самую левую и для полученного типа уже писать инстанс

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

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
но с чего ты взял, что оно тогда будет туда влезать?
условно говоря, тип T a изоморфен типу T' a () , который ожидает класс C

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
А откуда такое неприятие звёздочки?
странный ничего не говорящий символ, тайп-левел умножение, есть намного более говорящий вариант Type

еще многим (мне в том числе) он сначала давал неверную интуицию как о 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
Олсо почему Type, а не Ty?
Почему Алексей Худяков, а не АХу?

A64m
14.06.2018
09:03:47
Олсо почему Type, а не Ty?
да, длинновато, но Ty мне не нравится

вообще не очень люблю сокращения такого типа

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
T хорошо, притащит много окамлеров
вы ещё скалистов позовите

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

но в хаскеле так нельзя, так что не понравится все равно

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
насколько Trees that grow переносимо на личные rpn-калькуляторы? не оверкил ли оно для всего, что не является GHC?
Я думаю, что оно оверкилл как раз для ghc, которому он огромное количество кода перелопатит. Я хотел в своём пет-проджекте запилить, но пока всё никак руки не доходят

A64m
14.06.2018
09:35:36
в коде до сих пор пишут, транслитом
да, сейчас вместо параметров вроде a и 'a пишут, и не всегда beta бывает что и юникодом

IC
14.06.2018
09:35:58
да, сейчас вместо параметров вроде a и 'a пишут, и не всегда beta бывает что и юникодом
технический долг платежом красен, угу. я поэтому и смотрю заранее варианты чтобы не лопатить через пару месяцев.

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
https://gist.github.com/alpmestan/757094ecf9401f85c5ba367ca20b8900 вот такое нашел
Примерно так, да. У нас так newtype RedirectLocation = RedirectLocation { unRedirectLocation :: ByteString } deriving (Eq, Show, ToByteString) type LocationHeader = Header "Location" RedirectLocation handle :: ... m (Headers '[LocationHeader...] ...) handle = addHeader (RedirectLocation "/") ...

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

Yuuri
14.06.2018
09:55:35
newtype Flip a b = Flip (Foo b a)
Но это же будет новый тип :( Без него никак? (если никак, то я смирюсь)

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 тут классику забыли

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