Egison is a purely functional programming language that realizes non-linear pattern-matching against unfree data types. We can directly pattern-match against a wide range of data types such as lists, multisets, sets, trees and graphs with Egison.