Use 4-spaces indentation
Put new line between different functions

If arity is different - functions are different.
Don't put new line between function clauses of same function
Use 'orelse' operator instead of 'or'

'orelse' is shortcut version of 'or', if left operand is 'true', then right will not be evaluated.
Don't append single element at the end of the list

In erlang, lists are linked lists, complexity of placing element at the end of the list is O(N) where N is length of the list.
It's more efficient to put element in head (O(1)), and later reverse whole list.

Maybe here it won't be noticeable, but when working with big lists, it will a big payoff.
Don't wrap arguments in tuple

It's not a bad practice to have function of arity 4
Use eunit test generators instead of separate functions

When you have lots of similar tests, it's better to place them in one generator.
Use '_assertEqual' macro instead of '_assert'

'assert' macro is usefull when you're testing logical conditions and
'assertEqual' is prefered when you're validating any result from your functions.
Use list comprehension in test generator

This is *arguably* more prefered in tests like these.
Merge pull request #1 from GammaEcho/advice_pr

Advice pr