読者です 読者をやめる 読者になる 読者になる

DLR で .NET Framework 上で動く Ruby 風言語 Beryl を書いてみようとした

IronRuby は衰退しました

Mirah という JVM 上で動く Ruby 風言語があるそうで、ググっていたところ .NET Framework 上で動く Ruby 風言語を作りたいなーと思ってしまった。
まずは IronRuby を目コピしてみることにした。

分かったこと

Linux 版の MonoDevelop(@5.9.6) は静的メソッドどころかプロパティもリファクタリングで自動で作ってくれないことと、 Beryl は接頭語としては著しく可読性を損なうという事実だった。

以下の実際に目コピしたコードを見て欲しい:

        /// <summary>
        /// Tries the get immediate class of.
        /// </summary>
        /// <returns>The get immediate class of.</returns>
        /// <param name="selfObject">Self object.</param>
        /// <param name="instanceData">Instance data.</param>
        public static BerylClass TryGetImmediateClassOf(object selfObject, ref BerylInstanceData instanceData) {
            var berylObject = selfObject as IBerylObject;

            if ( berylObject != null ) {
                return berylObject.ImmediateClass;
            } else if ( instanceData != null || ( instanceData = TryGetInstanceData( selfObject ) ) != null ) {
                return instanceData.ImmediateClass;
            }
            return null;
        }

お分かりだろうか。
BerylClass はまだかっこいいものの BerylInstanceDataIBerylObject はあまりかっこいいとはいえない。
どこが単語の終わりで次の単語の始まりなのかよくわからなくなってくる。

Emerald とか Peridot にするべきだったかもしれない。