今のところElmに型を推論させているだけですが、必要ならば、定義の上の行に型注釈を書くこともできます。aという型は、「リストがあるのはわかるが、何の型が入るかはわからない」ということを表現しています。小文字のaは型変数と呼ばれます。型変数には特定の型に固定する制約がありません。言い換えると、その型は使用方法に基づいて変化する可能性があるということです。https://nacl-ltd.github.io/2017/11/30/introduction-to-type-of-haskell.html型変数は任意の型が入ることを示しています。同じ名前の型変数の型は、全て同じであることに注意してください。型変数aには「String」や「Float」などの型情報が入る。型変数aがStringに紐づいた場合は、以降aはString型となる。型変数は小文字から始めなければなりませんが、完全な単語でも構いません。例のように1文字の変数でなくても問題ありません。elementとも書けます。小文字で始まっていれば大丈夫です。型変数のaやbといった1文字のものは慣例によりいたるところで使われていますが、より具体的な名前を付けたほうがいい場合もあります。Int」と書いた方が、型注釈から読み取れるプログラマーの意図が明確になりますね。