Records are important data structures in Elm. In this lesson we learn to create a record as well as describe the record by creating a type. We will also see how these new types can be used to clean up our annotations.
00:00 Records are data structures in Elm. Let's create a record named Resources. This will contain resources that we want to store for learning Elm. The record structure is wrapped in curly braces. We will create a key value pair named Name, and set it equal to a string.
00:21 A record can also hold different types. We can add isComplete as a bool and an ID as an int.
00:30 Let's do a little set up to make this app run. We already importing HTML, but let's bring in everything with the double dots. In Main, let's reference a view function we are going to write, and pass in resources. Finally, create a view, and it expects resources and writes out name.
00:51 We can access values from a record by using it's name and a dot and then then value. We will use forward function to pass it into text.
01:04 Using square brackets, we can make a list of our records. While we're at it, let's add a link key value.
01:20 Now that we have a list of items, we will need to map over them to transform our list into HTML.
01:37 If we wanted, we could break up the view function by creating a function that handles the mapping of the list of resources.
01:52 Right now, if we wanted to add a type annotation to resource list, it would look like this.
02:12 Yikes. This is the shape of our data, but it's not very readable. We can break that out and create a resource type.
02:21 This looks very similar to our actual record, but now we use semicolons. Use the keyword type, then alias, then the name of our new type.
02:43 Alias says anytime someone refers to the capital R Resource, this is the structure of the data. Now we can use the name Resource in our type annotation.
02:53 This says we are expecting a list of Resource. We could also create a type for that.
03:07 Let's update our annotation again and add one for view. Let's verify that works.
03:20 Being able to give a name to the structure of our data really cleans up our type annotations, and we now have the basics of records.