On Tuesday, February 14, 2017 at 2:48:26 PM UTC, Rupert Smith wrote:
>
> On Tuesday, February 14, 2017 at 2:28:50 PM UTC, Rupert Smith wrote:
>>
>> Is there some way to avoid this, perhaps using extensible records?
>>
>
> I was kind of hoping something like this might work, but it doesn't:
>  
> type alias Positioned a =
>     { a | rect : Rectangle }
>
> type alias WithContent a =
>     { a | content : Maybe String }
>
> type State
>     = Hidden {}
>     | Aware (Positioned {})
>     | Active (Positioned (WithContent {}))
>     | Inactive (Positioned (WithContent {}))
>

Being able to pattern match like this is convenient:

Aware { rect } -> 

Unfortunately there doesn't seem to be a way of doing deeper pattern 
matching:

SomeState { someMaybe as Just value }

Using the 'as' syntax. Some of the time this will mean using a nested case 
statement - although should mostly be avoided as only putting values you 
really need in each state should eliminate the Maybes. I have now turned 
the 'content' field into a String and dropped its Maybe.

-- 
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