Solution of http://haskell98.blogspot.ru/2014/12/blog-post_5.html task