Size: a a a

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

2020 April 03

MP

Max P in Elm Lang сообщество разработчиков
Привет, в Elm в List можно класть только одинаковые типы данных, верно?

Есть кусочек кода elm 0.18
type alias TrackData =
   ( String, Encode.Value )


encodeTrackData : TrackData -> Encode.Value
encodeTrackData ( event, data ) =
   Encode.list [ Encode.string event, data ]


По идее в последней строке, в лист передается "строка" и "encode.value"... (эм, как по мне разные типы, или из-за того что encode.value этакий спец тип, элм простил?)

В elm 0.19 такой же код как будет выглядеть, не подскажете?
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Max P
Привет, в Elm в List можно класть только одинаковые типы данных, верно?

Есть кусочек кода elm 0.18
type alias TrackData =
   ( String, Encode.Value )


encodeTrackData : TrackData -> Encode.Value
encodeTrackData ( event, data ) =
   Encode.list [ Encode.string event, data ]


По идее в последней строке, в лист передается "строка" и "encode.value"... (эм, как по мне разные типы, или из-за того что encode.value этакий спец тип, элм простил?)

В elm 0.19 такой же код как будет выглядеть, не подскажете?
туда можно union закинуть...
источник

R:

Ryner :: () -> IO ❄️ in Elm Lang сообщество разработчиков
Что-то типа: type StringOrInt = String String | Int Int
источник

MP

Max P in Elm Lang сообщество разработчиков
хм, интересно.
Я хочу отправлять события в GA (через порт), и соответственно хочу писать в elm update функции так:
1) Track "eventName" Encode.int 10
2) Track "eventName" Encode.string "123"
3) Track "eventName" Encode.object ...

получается мне для этого надо Union Type придумать или я не о том думаю...

в качестве примера с Int

case JD.decodeValue flagsDecoder flags of
       Ok decodedFlags ->
           ( App { config = decodedFlags }
           , sendToJs <|
               Track
                   ( "App initialized"
                   , JE.int 10
                   )
           )

       Err err ->
           ( AppInitError, Cmd.none )


в elm 0.18 с куском кода выше, можно было после названия ивента послать любую структуру, теперь видимо так не работает )
источник

MP

Max P in Elm Lang сообщество разработчиков
если я правильно понял, чтобы поладить с разными типами мне нужен еще один тип, который их объединит, так?
источник

DK

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

MP

Max P in Elm Lang сообщество разработчиков
Denis Krivosheev
Вообще в элм есть способ сделать рестриктед полиморфизм, но он весьма муторный... не уверен хотя что это то что нужно тут... не совсем понятно чего нужно добиться
Я хочу посылать в порт событие, payload которого может быть как строкой, числом, null, так и обьектом.
источник

MP

Max P in Elm Lang сообщество разработчиков
Может это и лишнее, но в старом коде это было и мне интересно, можно ли на 0.19 так написать и нужно ли.
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Max P
Я хочу посылать в порт событие, payload которого может быть как строкой, числом, null, так и обьектом.
Смысл elm, что это все должно быть описано.
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Доберусь до компа проверю
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Опиши и отправляй. Проблема где?)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
По идее можно слать Json.Value, в него можно все скастить
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Max P
Я хочу посылать в порт событие, payload которого может быть как строкой, числом, null, так и обьектом.
Сделай тип на каждое событие
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Или порт на каждое событие
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Нафиг мучатся с Json?
источник

MP

Max P in Elm Lang сообщество разработчиков
Alexey Yurchenko
Смысл elm, что это все должно быть описано.
спасибо, мне просто было интересно ,может я упустил какой-то трюк)
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
звучало как желание использовать any
но это противоречит elm
источник

MP

Max P in Elm Lang сообщество разработчиков
отлично, главное понимать что я в нужном направлении)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Alexey Yurchenko
звучало как желание использовать any
но это противоречит elm
На самом деле не совсем. Человек хочет по сути использовать serialisable, это наверное основная критика элм, что интерфейсы не поддерживаются
источник

DK

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