Egison is the purely functional programming language that realized non-linear pattern-matching against unfree data types. We can directly represent pattern-matching against lists, multisets, sets, trees, graphs and any kind of data types.