Size: a a a

Elm Lang сообщество разработчиков

2020 November 09

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Kir
Стоп, а алиасы разве ж непрозрачные?
Алис делается на тип, а не на конструктор типа
источник

K

Kir in Elm Lang сообщество разработчиков
А, вы не можете их реэкспортировать
источник

K

Kir in Elm Lang сообщество разработчиков
Ну тогда смарт-конструкторы и элиминаторы
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Можно, но тогда надо создавать лямбду на каждый конструктор и по этой штуке матчиться нельзя
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Kir
Ну тогда смарт-конструкторы и элиминаторы
Не знаю что это, расскажи)
источник

K

Kir in Elm Lang сообщество разработчиков
А-ля

type Those a b
 = This a
 | That b
 | Empty
 | Both a b

this : a -> Those a b
this = This

that : b -> Those a b
that = That

empty : Those a b
empty = Empty

both : a -> b -> Those a b
both = Both

elim : (a -> c) -> (b -> c) -> c -> (a -> b -> c) -> Those a b -> c
elim unThis unThat unEmpty unBoth those = case those of
 This a -> unThis a
 That b -> unThat b
 Empty -> unEmpty
 Both a b -> unBoth a b


Пока писал, пальцы устали. Проще кодогенератор сделать, чес-слово, который находит (регулярками) коммент
— $gen-type Those a b = This a | That b | Empty | Both a b

и всё это генерит, заменяя коммент на
— gen-type Those a b = This a | That b | Empty | Both a b
источник

K

Kir in Elm Lang сообщество разработчиков
@denistakeda ^ как-то так, но это ужасно, как видишь
источник

K

Kir in Elm Lang сообщество разработчиков
Я могу попробовать кодогенератор накатать
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Проблема больше не в том, чтобы создать, а в том, чтобы заматчиться по типу... мы это делали чтобы было проще а с таким elim будет сложнее... придётся героически преодолевать препятствия которые сами себе создали))
источник

K

Kir in Elm Lang сообщество разработчиков
Вот да, тут уже _ -> ... не сделать
источник

K

Kir in Elm Lang сообщество разработчиков
Придётся каждую клаузу писать
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Но мы это решили немного кривенько но куда проще
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Мы ж фронтендеры что с нас взять)))
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Изнутри нельзя импортить ничего КРОМЕ одного модуля Signals 😂
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
В котором пока у нас лежит один единственный тип
источник

K

Kir in Elm Lang сообщество разработчиков
В котором лежат все типы?
источник

K

Kir in Elm Lang сообщество разработчиков
F
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Kir
В котором лежат все типы?
Не все а только те, которые должны торчать наружу и что-то сигнализировать внешней системе
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
В частности у нас там лежит RecordingType
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
И усе
источник