Vladislav
В нормальном языке ' быть не должно
A64m
это неприятно, но на такие жертвы можно пойти
Vladislav
Уж лучше List писать
A64m
тем более в хаскеле, который нормальным на тайплевеле если и будет, то в далеком будущем, и такого кода в нем будет минимум
A64m
т.е. на один ' тысячи List-ов будут
Ilya
Прекрасный хаскель будущего
A64m
короче говоря, в хаскеле платить уродствами на тайплевеле за удобства на велью-левеле нормально
A64m
просто сейчас тайплевел совсем адище, его надо хоть в немного вменяемое состояние привести
A64m
пусть ради одной строки на тысячи нетайплевельных
Vladislav
да кому тёрм-левел нужен вообще
Антон
Hithroc
Kirill
ну надож перл сделать, куда без регекспов
IC
Какое расширение даёт писать Type благословенный вместо б-гмерзкой *?
Denis
GHC 8
IC
Not in scope: type constructor or class ‘Type’
кана
{-# LANGUAGE DataKinds #-}
import Data.Kind
IC
Странно... Хтоническая звезда то по дефолту доступна
A64m
и еще долго будет
IC
насколько Trees that grow переносимо на личные rpn-калькуляторы? не оверкил ли оно для всего, что не является GHC?
Timofey
А вот такой ещё вопрос: есть тип T с кайндом * -> *. А есть класс C, который требует кайнд параметра вида * -> * -> *. Я хочу сделать instance C T, как заигнорить одну из звёздочек в кайнде?
Timofey
или сказать, что первые две звезды будут одним и тем же типом
IC
Алексей
А откуда такое неприятие звёздочки?
Timofey
IC
IC
но с чего ты взял, что оно тогда будет туда влезать?
Cheese
A64m
очень странно, что то, от чего отказались для обычных типов использовали для кайндов
A64m
newtype Foo a b = Foo (T a)
кана
{-# 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
о, точно, спасибо
кана
еще многим (мне в том числе) он сначала давал неверную интуицию как о wildcard - то есть каинд вообще всех типов (а оказывается только возможнонаселенных)
A64m
да и не всех возможнонаселенных
Алексей
По мне они совершенно идентичны с точки зрения читаемости. Чисто графически звёздочка мне импонирует даже больше, если бы она не конфликтовала с операторами
IC
Почему звёздочка, а не, там %?
A64m
проблемы с читаемостью и у меня не было
A64m
а почему %?
IC
а почему *?
A64m
наверное, из-за миранды и старого эмеля
Алексей
Олсо почему Type, а не Ty?
IC
> выглядит симпатичней
привычней
A64m
правда там звездочки - это параметры
A64m
вообще не очень люблю сокращения такого типа
Алексей
Ну вопрос был троллирующий
A64m
T или там U или S
A64m
U -> U -> U
A64m
но можно же будет самому написать type U = Type и все
кана
U мне нравился вариант
кана
довольно распространен
Alexander
T хорошо, притащит много окамлеров
IC
Alexander
это к оо-хаскель
Alexander
и ете
A64m
не, окамлерам такое не понравится
A64m
по окамловски было бы
import qualified Data.Kinds as Kind
-- и дальше
Kind.T
IC
require Data.Kinds; Kinds.T
A64m
тогда уж Kinds.t
A64m
но в хаскеле так нельзя, так что не понравится все равно
Alexander
Denis
звезда норм
Denis
чем вам звезда не угодила
Denis
она на три символа эффективнее
Oleg
T тоже фиговая
IC
Oleg
типа намёк на Top который ()
Denis
$ -> $ это для успешных
A64m
почему не % или не $?
видимо потому что в миранде и старом эмеле писали сигнатуры вроде (* -> **) -> [*] -> [**]
A64m
ну и кайнд ? и сейчас есть
Oleg
Но, если я правильно помню, жалобу на звезду, там никакой символ не устроит
IC
A64m
A64m
ну это были параметры, т.е. в каком-то смысле интуиция про вайлдкард правильная, именно такая и планировалась исторически