What characters may the names of variables and functions consist of?

If I understand correctly, only these characters are allowed: letters, numbers, “-” and “_”.

This would exclude the question mark. I was wondering whether I could end the name of a predicate function with a question mark (as is usual in LISP/Scheme):

#let isOdd?(num) = ...