Haskell does not allow such a declaration since the pattern in the left-hand side contains a defined function ({{Mono|++}}). Such a pattern is also called ''functional pattern''.<ref>{{cite book |last1=SergioAntoy |first1=AntoySergio |last2=Hanus |first2=Michael |title=Logic Based Program Synthesis and Transformation |chapter=Declarative Programming with Function Patterns |series=Lecture Notes in Computer Science |year=2006 |doi=10.1007/11680093_2 |volume=3901 |pages=6–22 |isbn=978-3-540-32654-0}}</ref> Functional patterns are enabled by the combined functional and logic features of Curry and support concise definitions of tasks requiring deep pattern matching in hierarchical data structures.