some musings with haskell types;
functions in haskell can be matched against patterns.
started with guards, stopped at the "where" part of it.