A custom type

We have created a fuller flash card. It has a front and a back. But what way is it facing? Are we seeing the front or the back?

If we want to differentiate we should be able to express the difference. We will do that with a custom type.

Face

The following code introduces a new type Face. It will be used to determine which way our flashcard is facing.

type Face
    = Front
    | Back

The type construct is an example of an algebraic data type. That is a fancy name saying that there are certain ways of combining different types into more complex types. We will come back to that subject later on.

Extending FlashCard

With a Face we should extend our FlashCard model. In the FlashCard type alias add a field face of type Face.

type alias FlashCard =
    { front : String
    , back : String
    , face : Face
    }

This will break our program. This is because when we created a flash card we should also specify which way it is facing.

{ front = "Wettervorhersage", back = "Weather forecast", face = Front }

Verification

If it compiles, it should still show you "Wettervorhersage" when you reload the app.