Would this be possible without breaking the grammar? bool isPalindrome = getRange().(r => equal(r, retro(r))); I find this way of writing that expression more natural and efficient than the alternatives: auto r = getRange(); bool isPalindrome = equal(r, retro(r)); or bool isPalindrome = (r => equal(r, retro(r)))(getRange());