# How Do You Read Types?

**URL:** <https://discourse.elm-lang.org/t/how-do-you-read-types/8116>\
**Category:** Learn\
**Created:** [January 31, 2022, 3:55pm UTC](https://discourse.elm-lang.org/t/how-do-you-read-types/8116 "2022-01-31T15:55:06Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![avh4](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/avh4/32/97_2.png) [@avh4](https://discourse.elm-lang.org/u/avh4)\
**Post date:** [February 4, 2022, 3:57am UTC](https://discourse.elm-lang.org/t/how-do-you-read-types/8116/7 "2022-02-04T03:57:19Z")

</div>

This is a fun question!

I find when things get complicated, I try to use different sentence patterns for the same concepts to help distinguish between different levels of nesting. And I tend to repeat small chunks to myself and then build up larger chunks. So in your examples, I might think:

`(<|) : (a → b) → a → b`

- okay, we’ve got a function
- the first argument is another function that converts `a` to `b`
- the second argument is an `a`
- and it returns a `b`

`(|>) : a → (a → b) → b`

- okay, we’ve got an `a`
- and we’ve got a function that converts `a`'s to `b`'s
- and it returns a `b`

(I guess I like to hype myself up by starting with “okay” 🙂 )

With those specific examples, I’m familiar enough with them that I wouldn’t normally think all that, but when I see functions that start to confuse me, that’s the type of self-talk I tend to fall back on.

---

_[View the full topic](https://discourse.elm-lang.org/t/how-do-you-read-types/8116)._
