Something to do with argument evaluation, but this really does seem counterintuitive:
pry(13)> n1
"1gej4"
pry(14)> <<"1gej4", ?_>>
"1gej4_"
pry(15)> <<n1, ?_>>
** (ArgumentError) argument error
(stdlib) :erl_eval.expr/3
(iex) lib/iex/evaluator.ex:219: IEx.Evaluator.handle_eval/5
(iex) lib/iex/evaluator.ex:200: IEx.Evaluator.do_eval/3
(iex) lib/iex/evaluator.ex:178: IEx.Evaluator.eval/3
(iex) lib/iex/evaluator.ex:77: IEx.Evaluator.loop/1
(iex) lib/iex/evaluator.ex:21: IEx.Evaluator.init/4
(iex) lib/iex/pry.ex:55: IEx.Pry.pry/2