Hi,
hope its polite to bump up an old thread like this - if not, please accept 
my apologies. I have been struggling with the record update syntax for a 
while and wanted to share another use case which I think could be made 
better.
So let's say I want to populate a list of objects of the same type which 
have a lot of properties, most of which are kept default, e.g.

type alias Customer =
  { id : Int,
    Name : String ,
    -- Lots of other stuff
  }

and I have a "constructor" function to build instances with default values, 
but never forget to fill in the id, e.g.

defaultCustomer : Int -> Customer
defaultCustomer id =
  { id = id,
   Name = "",
   -- lots of other initialization
  }

now I would like to write things like
[ 
  { (defaultCustomer 1) | Name = "Smith" },
  { (defaultCustomer 2) | Name = "Jones" }
]

Which is not possible.

Now I have two options:
a) do not use a "constructor" and always write the records in full (not 
nice since they have a lot of fields which are mostly left default)
b) just have a template defaultCostumer : Customer and hope I will never 
forget to fill in the id (used in messages)
c) have a long "let" clause before defining the list

Neither of which seems nice.

I'll probably go with b), but if anyone has a nice suggestion how to 
enforce filling in a record in this way with the current syntax it would be 
very welcome.

And thanks for the work on elm - I am learning it and having fun with it!

Martin





 but I tried to figure out where on GitHub should this be discussed and 
kind of failed...
(is it https://github.com/elm-lang/elm-plans/issues/16 or 

On Saturday, 26 July 2014 18:08:22 UTC+2, Jeff Smits wrote:
>
> Yeah, I really want this feature. But I guess I forgot about the "code 
> comparison". 
>
> @Evan: can you say more concretely what kind of code comparison you want 
> to see before moving forward on this feature?
>
> On Sat, Jul 26, 2014 at 2:26 PM, David Sargeant <[email protected] 
> <javascript:>> wrote:
>
>> Seems a little strange that the following does not work:
>>
>> { {} | attrs = [1] }
>>
>> I know it's not really useful, but I guess it goes back to the issue of 
>> allowing arbitrary expressions to the left of the vertical bar.
>>
>> -- 
>> 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] <javascript:>.
>> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to