Hi Matt,

Thanks for your nice answer!

As for Dicts, I would say double check to make sure you don't
actually want a record. Basically if you know all the fields at
compile time...you probably want a record, not a dict.

I may have an habit of using dicts too often... (in python, almost everything 
is a dict anyway ;-) )

What do you think? in my code I have

type alias Model =
    { lines : Dict String Line
    , from : String
    , to : String
    [...]
    }


type alias Line =
    { name : String
    , from : String
    , to : String
    [...]
    }

The Dict content is static, but I chose a Dict in order to be able to iterate 
over it, as in

getTimes : Model -> Cmd Msg
getTimes model =
    Cmd.batch <| List.map getLineTimes (Dict.values model.lines)

I also need to find a line from its name because each line has its own Http.get 
and needs to get the value back

type Msg
    = FetchSucceed String (List String)
    | ...


update : Msg -> Model -> ( Model, Cmd Msg )
update action model =
    case action of

        FetchSucceed name times ->
            { model
                | lines =
                    let
                        line =
                            case Dict.get name model.lines of
                                Just l ->
                                    l

                                Nothing -> -- should never occur!
                                    Line name "" "" [] [] Nothing
                        [...]
                    in
Dict.insert name newLine model.lines

It seems to me that if I replace my Dict by a record I'll have to deal with 
each line separately. But maybe I'm missing something?

One thing that bothers me is that I must provide some code for the case when 
the key is not in the dict, although I know by design that it will not happen. 
This could be avoided by using records, of course.

So for something like `[i +5 for i in range(20)]`  in python, you could do 
something like `List.map ((+) 5) [0..20]`

Right, but I still like how python comprehensions allow to combine map, filter 
and cartesian product in a simple, short syntax!

Cheers and again, welcome to elm.

Thanks :-)

Matthieu

--
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to