Size: a a a

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

2020 July 23

k

kl mw in Elm Lang сообщество разработчиков
Denis Krivosheev
Почему это не может быть например
type Interval = Interval Int Int

type alias WithInterval a =
   { a | interval : Interval }
там не всегда Int! иногда Maybe Int
источник

k

kl mw in Elm Lang сообщество разработчиков
в этом поинт
источник

DK

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

k

kl mw in Elm Lang сообщество разработчиков
Denis Krivosheev
Ну заменить на мэйби инт да и все
ну тогда нужно будет добавлять еще одну степень полиморфизма для WithInterval 🙂 но да, так можно сделать
источник

DK

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

k

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

k

kl mw in Elm Lang сообщество разработчиков
мне здесь и не нужен restricted полиморфизм
источник

k

kl mw in Elm Lang сообщество разработчиков
примерно такая идея -- Interval a b это тип который хронит некоторую информацию про интервал времени. Преобразования у меня примерно такие:
1. List (Interval (Maybe Posix) {})
2. List (Interval (Maybe Posix) { some_additional_data })
3. List (Interval Posix { some_additional_data })
4. List (Interval Posix { more_additional_data } )
источник

k

kl mw in Elm Lang сообщество разработчиков
и вот вопрос в преобразовании 2 -> 3
источник

k

kl mw in Elm Lang сообщество разработчиков
я хочу применить List.filterMap и почистить все Interval (Maybe Posix) ... в которых есть Nothing и получить просто Interval Posix ...
источник

k

kl mw in Elm Lang сообщество разработчиков
и поэтому как раз хочется построить такую вот функцию nonmaybe : Interval a (Maybe b) -> Maybe (Interval a b) про которую я писали выше
источник

DK

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

k

kl mw in Elm Lang сообщество разработчиков
Posix в описании выше я замянели на Int просто для простоты
источник

k

kl mw in Elm Lang сообщество разработчиков
Denis Krivosheev
Вопрос в том, почему рекорд, который хранит интервал должен включать в себя что-то ещё кроме собственно интервала?
правда состоит в том что это тип который хочет заказчик)
источник

k

kl mw in Elm Lang сообщество разработчиков
ну он на выходе хочет рекорд у которого будет start end и еще доп информация
источник

k

kl mw in Elm Lang сообщество разработчиков
но можно действительно использовать полиморфный тип интервала и в конце просто преобразовать к нужному виду
источник

k

kl mw in Elm Lang сообщество разработчиков
наверное это самое разумное )
источник

k

kl mw in Elm Lang сообщество разработчиков
Denis Krivosheev
Вопрос в том, почему рекорд, который хранит интервал должен включать в себя что-то ещё кроме собственно интервала?
спасибо за наводки, anyway )
источник

DK

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

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
а у тебя как раз для старт и энд тип должен поменяться с Maybe a на а
источник