# lowerCase UpperCase

**URL:** <https://discourse.elm-lang.org/t/lowercase-uppercase/5572>\
**Category:** Learn\
**Created:** [April 17, 2020, 1:26pm UTC](https://discourse.elm-lang.org/t/lowercase-uppercase/5572 "2020-04-17T13:26:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![steven](https://avatars.discourse-cdn.com/v4/letter/s/94ad74/32.png) [@steven](https://discourse.elm-lang.org/u/steven)\
**Post date:** [April 17, 2020, 1:26pm UTC](https://discourse.elm-lang.org/t/lowercase-uppercase/5572/1 "2020-04-17T13:26:55Z")

</div>

Is it correct to assume that:

- UpperCase is used for

> - types for example _type Model_

- lowerCase is used for

> - type variables for example _List a_
> - functions for exampl _add =_

Is this mandatory or convention?  
Is the above list complete?

---

<div class="post-metadata">

**Author:** ![Lucas\_Payr](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/lucas_payr/32/4993_2.png) [@Lucas\_Payr](https://discourse.elm-lang.org/u/Lucas_Payr)\
**Post date:** [April 17, 2020, 1:53pm UTC](https://discourse.elm-lang.org/t/lowercase-uppercase/5572/2 "2020-04-17T13:53:00Z")

</div>

It is mandatory, the compiler will tell you if you make some mistake.

There is one small exeption that is not included in your list: Record Constructors start with an uppercase (though they are functions):

```auto
type alias MyRecord =
  { name : String
  , age : Int
  }

user : String -> Int -> MyRecord
user name age =
    MyRecord name age

```

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex035/uploads/elm_lang/original/1X/50a05e53677a2c3b47776d7abd0f113eb50193a1.png) [@system](https://discourse.elm-lang.org/u/system)\
**Post date:** [April 27, 2020, 1:53pm UTC](https://discourse.elm-lang.org/t/lowercase-uppercase/5572/3 "2020-04-27T13:53:04Z")

</div>

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.
