I expect the following three expressions to evaluate to 'ok': (fun("X" ++ _) -> ok end)("X"). (fun([$X | _]) -> ok end)("X"). (fun([$X] ++ _) -> ok end)("X"). The first two meet my expectations, but the third exits with an illegal_pattern exception. Is this intentional or a bug? Thanks.