Would you have been more comfortable if the definition would have been like
the following?

type Config data msg =
  ConfigConstructor
    { toId : data -> String
    , toMsg : State -> msg
    , columns : List (ColumnData data msg)
    , customizations : Customizations data msg
    }

If yes, then the only additional thing you need to know is that it is just
fine to use the name Config in both the places of Config and
ConfigConstructor here, because these two entities live in two different
name spaces, so the compiler can never be confused by them.

If not, if the above definition would not be clear to you either, then you
probably need to read (more) about union types. The guide is recommended,
specifically the above is like the example
http://guide.elm-lang.org/types/union_types.html#anonymous-users, where
Config is like User in that example and ConfigConstructor is like Named in
that example.
​

2016-09-05 12:22 GMT+02:00 Luis Fei <f.calab...@gmail.com>:

> Hello, I just tried to look into elm-sortable-table's source code, and
> this `Config` type got me confused
>
> https://github.com/evancz/elm-sortable-table/blob/master/
> src/Table.elm#L96-L102
>
> I'll paste it here for convenience
>
> type Config data msg =
>   Config
>     { toId : data -> String
>     , toMsg : State -> msg
>     , columns : List (ColumnData data msg)
>     , customizations : Customizations data msg
>     }
>
> How this type works? Is the inner Config called like a function? What's
> related between two Config? And so on...
>
> Hope someone can explain it a bit, thanks
>
> --
> 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 elm-discuss+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 elm-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to