Although macros may expand into definitions and syntax definitions in any context that permits them, it is an error for a definition or syntax definition to shadow a syntactic keyword whose meaning is needed to determine whether some form in the group of forms that contains the shadowing definition is in fact a definition, or, for internal definitions, is needed to determine the boundary between the group and the expressions that follow the group
In other words, you cannot redefine define. I suppose the interpreter falls into infinite loop when it tries to substitute define# with define, and then define -- with define#.
That being said, I don't think it's fortunate to use the # character within a symbol.