> you've misunderstood the current grammar. you have defined 2 functions > name and '@' as {block}. the binding, illustrated with parens is > fn (name @) {block} > the production in the grammer is > FN words brace > but since once production for words is words -> keyword, a keyword > is a valid function name.
Then, how would you explain this: term% fn x @{x=y} term% whatis x fn x {x=y} term% fn 'x @'{x=y} term% whatis 'x @' fn 'x @' {x=y}