日常で使うRubyプログラミング

日常の作業でRubyを使う際、気になったことをChatGPTに聞いています。

アルゴリズム・データ構造、他

RubyでLispらしさを実感してみる

ゆるコンピューターラジオを聴いていて(40時間Lispを勉強したら信者になれる?)、Lisp面白そうだなと思ったものの、違う言語を今からやる気力は無いので、僕がよく使っているRubyとの比較でいろいろ聞いてみました。 面白そう・・。 かなり前に勉強してみた…

RubyでのDSL実装例と拡張バッカス・ナウア記法(EBNF)

DSLの仕様を記述する記法である拡張バッカス・ナウア記法(EBNF)と、Rubyで実際にその仕様を実装する方法について聞いてみました。 言語仕様の構成要素として,終端記号 (Terminal symbols)、非終端記号 (Non-terminal symbols)、導出記号 (::=):、選択 (|)…

RubyでDSL(Domain Specific Language)を設計する

ユーザー側からの入力を簡易プログラミング言語みたいにしたいと思うことがたまにあったので、DSLの作成方法を聞いてみました。 Rubyの場合は、特定のオブジェクトをレシーバーとしつつ、そのオブジェクトのコンテキストでブロック内のコードを実行させるins…

Ruby版データクラス?:Struct

使おうと思ったときにいつも定義の仕方を忘れてしまうので、気になっていたことも合わせて聞いてみました。 RubyのStructについて教えてください。 Kotlinでdata classを使う文脈で使っても良いですか? Rubyでデータクラスに類似のクラスやオブジェクト使い…

Rubyのハッシュは順序を保持しているそうです

Ruby1.9から、Rubyのハッシュは順序を保持しているそうで、組み込みのsort_byなどのメソッドを使ってソートもできるようです。 ただ、sort_byの戻り値はキーと値のペアの配列なので、さらに.to_hを呼び出す必要があります。 rubyのハッシュで、keyの順序を保…