Size: a a a

2021 March 07

к

кана in Haskell
что я уже делаю
источник

AA

A64m AL256m qn<co... in Haskell
Roman
я вижу такое:

> When OverloadedRecordDot is enabled and RebindableSyntax is not enabled the name 'getField' is resolved to GHC.Records.getField. When OverloadedRecordDot is enabled and RebindableSyntax is enabled the name 'getField' is whatever in-scope name that is.
ну да для геттеров тоже синтаксис ребфйндавбл, как и для всего прочего синтаксиса
источник

AA

A64m AL256m qn<co... in Haskell
тут примечательно то, что для сеттеров он ТОЛЬКО ребайндабл пока
источник

R

Roman in Haskell
A64m AL256m qn I0
ну да для геттеров тоже синтаксис ребфйндавбл, как и для всего прочего синтаксиса
ну то есть класс не закардкоржен прям, ты можешь перегрузить getField каким хочешь образом
источник

AA

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

AA

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

AA

A64m AL256m qn<co... in Haskell
хотя может какие-то исключения есть
источник

AA

A64m AL256m qn<co... in Haskell
проблема в том что вся эта перегрузка активируется одним куском для всего
источник

к

кана in Haskell
Misha Puzanov
тогда пойдет наверное
ну для геттеров получилось, для сеттеров нужно еще чет костылить, чтобы тип выводился, как в generic-lens
источник

K

Kir in Haskell
кана
x { a + 1 } ->
x { a = a x + 1 }

в том числе и вложенные

x { a.b + 1 } ->
x { a = (a x) { b = b (a x) + 1 } }

для любых операторов, в том числе и x{ a `rem` b }
тогда уж x { a.b ~ f }
источник

к

кана in Haskell
ну, а чем x { a.b ~ f } отличается от x { a.b & f }?
источник

R

Roman in Haskell
A64m AL256m qn I0
проблема в том что вся эта перегрузка активируется одним куском для всего
почему это проблема?
источник

к

кана in Haskell
Roman
почему это проблема?
иногда хочется оверлоаднуть что-то одно, например ду-синтаксис
источник

к

кана in Haskell
а получается только сразу все
источник

R

Roman in Haskell
кана
иногда хочется оверлоаднуть что-то одно, например ду-синтаксис
а, я не знал, что оно так работает
источник

к

кана in Haskell
включаешь ребиндабл синтакс, и нельзя даже строковые литералы использовать, не импортировав Data.String (IsString(..))
источник

AA

A64m AL256m qn<co... in Haskell
да, там надо свою прелюду делать
источник

к

кана in Haskell
вот это полезный был бы пропосал, разнести rebindable syntax на десяток отдельных экстеншенов
источник

к

кана in Haskell
небось тогда бы его и использовать начали
источник

AA

A64m AL256m qn<co... in Haskell
ладно строки
> :set -XRebindableSyntax
> if True then 1 else 2

<interactive>:2:1: error: Not in scope: `ifThenElse'
источник