Size: a a a

2021 February 16

VD

Velvet Darkness in Haskell
A64m AL256m qn I0
так откуда "комбинаторный взрыв-то"
во всех языках новые фичи появляются, которые друг на друга влияют
Ну 100 экстеншенов, каждый из них потенциально влияет на остальные 99. Звучит прям как что-то в степени чего-то.
источник

VD

Velvet Darkness in Haskell
А в других языках новые фичи нельзя обычно отключить. Их просто впиливают в мастер и всё.
источник

AA

A64m AL256m qn<co... in Haskell
Velvet Darkness
Ну 100 экстеншенов, каждый из них потенциально влияет на остальные 99. Звучит прям как что-то в степени чего-то.
ну чем это отличается от любого другого языка в котором 100 фич и все влияют на все?
источник

к

кана in Haskell
Vladislav Zavialov
data R = R { fld :: forall a. F a }
так, а такие вещи пофиксятся, когда будет некий impredicative polymorphism?
источник

VZ

Vladislav Zavialov in Haskell
Некий уже есть (QuickLook)
источник

VZ

Vladislav Zavialov in Haskell
Но он не помогает
источник

VZ

Vladislav Zavialov in Haskell
Тут надо придумывать что-то круче с констрейнт-солвером
источник

к

кана in Haskell
Velvet Darkness
Ну 100 экстеншенов, каждый из них потенциально влияет на остальные 99. Звучит прям как что-то в степени чего-то.
насколько я понимаю устройство ghc, экстеншены не локализованы все в себе, они просто выключены, но реализованы в неком общем коде все равно

то есть экстеншены уже и так друг на друга влияют

то есть если какой-то экстеншен меняет парсер, то это не в некотором модуле экстеншена будет другой парсер, а в основном парсере будут изменения, но за флагом
источник

к

кана in Haskell
@int_index это так?
источник

VZ

Vladislav Zavialov in Haskell
Каждый экстеншен это Bool, а потом в коде вставляются if-ы по ситуации
источник

LO

Leonid 🦇 Onokhov in Haskell
фичер флаги
источник

AA

A64m AL256m qn<co... in Haskell
Velvet Darkness
А в других языках новые фичи нельзя обычно отключить. Их просто впиливают в мастер и всё.
в гхц в сложных для этого случаях отключение не работает, к примеру, нельзя вопроизвести какие-нибудь дата/поли кайндс какими они были до тайп-ин-тайп
фича часто не отключена по настоящему а просто запрещена к использованию по каким-то признакам, пока не включишь фиче-импорт, что не одно и то же
источник

AA

A64m AL256m qn<co... in Haskell
делать всегда так, чтоб гхц работал как буто фичи нет, пока не включишь было бы тяжело, да
источник

VD

Velvet Darkness in Haskell
А, вот оно как. Тогда ок, наверное.
источник

VD

Velvet Darkness in Haskell
А то в моем представлении было: Есть 5 фич, добавляешь 6.
В других языках: проверил что 6 фича работает с 5 старыми
В гхц: проверяешь, что 6 работает с 2^5 возможных состояний старых фичей, потому что их можно включать-выключать
источник

JS

Jerzy Syrowiecki in Haskell
кана
полезно, когда селекторы напрямую не используются, а только линзы или рекорд-дот
и без линз и без dot полезно
источник

JS

Jerzy Syrowiecki in Haskell
Vladislav Zavialov
Я правильно понимаю, что вместо fld можно будет всегда написать \R{fld}->fld с RecordFieldPuns?
уже давно можно
источник

VZ

Vladislav Zavialov in Haskell
Да понятно, что можно, но с экстеншеном появится в этом актуальность
источник

VZ

Vladislav Zavialov in Haskell
Хотя не сработает для случаев, когда несколько конструкторов
источник

JS

Jerzy Syrowiecki in Haskell
A64m AL256m qn I0
ну чем это отличается от любого другого языка в котором 100 фич и все влияют на все?
когда все включены, их лучше тестируют
источник