Programmer's Note

コード読み書きの備忘録。

Ruby

RubyとLispとClojureのコードの読みやすさ

「なぜRubyは許容可能なLISPなのか - 翡翠はコンピュータに卵を生むか」という記事が面白かった。 この記事の中でサンプルコードを使って、 プログラムの読みやすさを対比させていた部分があったので、 Clojureでやってみたくなった。 Ruby [1,2,3].map {|n|…

簡単なcalculatorコマンドを作ってみる(Ruby)

たまーにさくっと計算機欲しいときがあるけど、UNIX標準のbcってクセがありすぎて辛い。 探してもシンプルなcalculatorコマンドってないもんだなと、、、。 やりたいことは、単純で $ calc 1024*24-54 24522 0x5fca 057712 結果を、10進、16進、8進て表…

エスケープシーケンスでカーソル移動を使ってみる(Ruby)

ちょい前にエスケープシーケンスで文字装飾を試した。(エスケープシーケンスの文字装飾を試す - Programmer's Dialy) さて、今回はカーソル移動を試してみたい。 (ちょっと文字列処理が入るのでRubyで) Kernighan先生の「Software Tools」の中で、フィル…

Rubyのevalと正規表現で簡単にデータを取り込んでみる

Rubyのeval()を使ってみる。これを使えば、 ファイルから読み込んだ文字列データを、そのままRuby処理系に渡して解釈できる。 今回は、例えば適当に定義したデータ形式のファイルから、 hashテーブルとして読み込むところをやってみたい。 データは例えば下…

Rubyでバッファリングなしのキー入力を試す

Rubyでバッファリングなしのキー入力読み込みを試す。 普通の標準入力の getc を使った場合は、 入力された文字はターミナルに出力されつつ、バッファリングされて、 Enterが押されて初めて文字列がプログラムに送られる。 例: ソース: t_getc.rb while c =…

Rubyでクロージャのテスト

以前、Swiftでもjavascriptでも試したクロージャを、Rubyでもやってみた。 つい今日覚えたlambdaを使って。 以下コード: def func_generator() a = 0; return lambda { a += 1 } end f_add = func_generator puts f_add.call puts f_add.call 出力: 1 2 参…

Rubyのlambda使用メモ:ハッシュテーブルに関数を入れて別の関数に渡す

Rubyでjavascriptっぽく、ハッシュテーブルに関数の定義を入れて、 別の関数に渡すてのをやってみた話。 javascripは便利で、関数=オブジェクトというところが分かってしまえば、 かなり何でもできてしまう(記述の自由度が高い)。 なにかしら構造体的なも…