変数名に ' (プライム) が使いたい

OCamlHaskell では変数名に ' (プライム) が使えます (先頭以外) 。

let a' = 1 in print_int a';;

「a とほぼ同じ意味だし、一時的な変数だからいちいち名前考えるのがめんどくさい、でも a2 は負けた気がする」という時に重宝します。
Ruby だと ' は文字列に使われるので不可能だと思いこんでいましたが、識別子の中ならほぼ問題ないことに気付きました。ので実装してみました。こんな感じ。

$ ./ruby -e "a' = 'foo'; a'' = 'bar'; p [a', a'']"
["foo", "bar"]

気持ち悪っ。ちなみに以下が動かなくなる非互換があります。ゴルファー涙目?

puts'foo'

すごく安易なパッチ。

Index: parse.y
===================================================================
--- parse.y     (revision 15044)
+++ parse.y     (working copy)
@@ -4568,7 +4568,7 @@

 #define parser_mbclen()  mbclen((lex_p-1),lex_pend,parser->enc)
 #define parser_precise_mbclen()  rb_enc_precise_mbclen((lex_p-1),lex_pend,parser->enc)
-#define is_identchar(p,e,enc) (rb_enc_isalnum(*p,enc) || (*p) == '_' || !ISASCII(*p))
+#define is_identchar(p,e,enc) (rb_enc_isalnum(*p,enc) || (*p) == '_' || (*p) == '\'' || !ISASCII(*p))
 #define parser_is_identchar() (!parser->eofp && is_identchar((lex_p-1),lex_pend,parser->enc))

 #define parser_isascii() ISASCII(*(lex_p-1))