2 added 9 characters in body edited Jan 14 '14 at 8:53 István Zachar 32.9k1818 gold badges118118 silver badges256256 bronze badges See the documentation for Optional: The special form s_.s_. is equivalent to Optional[s_]Optional[s_] and can be used to represent function arguments which, if omitted, should be replaced by default values globally specified for the functions in which they occur. This explains the result your are receiving. Thus, it seems you have a precedence problem, and a possible workaround is: Hold[(a_).(b_)] // FullForm  and get Hold[Dot[Pattern[a, Blank[]], Pattern[b, Blank[]]] Hold[Dot[Pattern[a, Blank[]], Pattern[b, Blank[]]]  See the documentation for Optional: The special form s_. is equivalent to Optional[s_] and can be used to represent function arguments which, if omitted, should be replaced by default values globally specified for the functions in which they occur. This explains the result your are receiving. Thus, it seems you have a precedence problem, and a possible workaround is: Hold[(a_).(b_)] // FullForm  and get Hold[Dot[Pattern[a, Blank[]], Pattern[b, Blank[]]] See the documentation for Optional: The special form s_. is equivalent to Optional[s_] and can be used to represent function arguments which, if omitted, should be replaced by default values globally specified for the functions in which they occur. This explains the result your are receiving. Thus, it seems you have a precedence problem, and a possible workaround is: Hold[(a_).(b_)] // FullForm  and get Hold[Dot[Pattern[a, Blank[]], Pattern[b, Blank[]]]  1 answered Jan 14 '14 at 8:31 Pinguin Dirk 6,17111 gold badge1818 silver badges3333 bronze badges See the documentation for Optional: The special form s_. is equivalent to Optional[s_] and can be used to represent function arguments which, if omitted, should be replaced by default values globally specified for the functions in which they occur. This explains the result your are receiving. Thus, it seems you have a precedence problem, and a possible workaround is: Hold[(a_).(b_)] // FullForm  and get Hold[Dot[Pattern[a, Blank[]], Pattern[b, Blank[]]]