みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

Elixirで無名関数の直接呼び出す

備忘。

Elixirで、無名関数の直接呼び出しをする場合の記法。

無名関数を利用する場合、従来は何かしらの変数へ束縛したのち利用する。

iex> noname_fn = fn -> "無名関数の呼び出し" end
#Function<45.97283095/0 in :erl_eval.expr/5>

iex> noname_fn.()
"無名関数の呼び出し"

しかし、無名関数自体を「半角丸括弧」で囲むことで、束縛せずに実行が可能となる。

iex> (fn -> "無名関数の直接呼び出し" end).()
"無名関数の直接呼び出し"

iex> (fn a, b -> a + b  end).(4, 5)
9

iex> (&(&1 + &2)).(4, 5)
9

iex> (&+/2).(4, 5)
9

アフター6ジャンクションの「国産RPGクロニクル」回が面白い

備忘。ゲームネタ。

Podcast番組「TBSラジオ「アフター6ジャンクション」」の特集「国産RPGクロニクル」の回が面白かったのでご紹介。

「国産RPGクロニクル」は、いわゆるJRPGの歴史をめぐるという特集です。
話の主軸は、日本のRPGの代表作である「ドラクエドラゴンクエスト)」と「FF(ファイナルファンタジー)」となっています。
2020-08-21の時点では、2回放送されています。
1回目がFC(ファミリーコンピュータ)時代、2回目がSFCスーパーファミコン)時代のものになっています。

内容を一言で言えば「おっさん*1ホイホイ」が満載の内容になっています(笑
もちろん、FC〜SFCが全盛期の頃に少年/青年と過ごしてきた自分にとっても、ホイホイと吸い寄せらた内容でした。

*1:30後半から50歳あたりのFC/SFC全盛期時代に青春を過ごした世代

続きを読む

Elixirの関数の処理時間を「:timer.tc」で計測する

Elixirの関数の処理時間を計測するとき、Erlangの関数:timer.tcを利用します。

:timer.tcの使い方としては、次の通り3種類あります。

  • tc/1: 関数名を指定(引数なし)
  • tc/2: 関数名、引数を指定。引数はリスト形式で渡す。
  • tc/3: モジュール名、関数名、引数を指定。関数名の前にはコロン(:)を付与し、引数はリスト形式で渡す。

戻り値は、「処理時間(microseconds(マイクロ秒))」と「関数の結果」のタプルです。

続きを読む

離乳食の量から生じたコミュニケーションギャップ

こどもが生まれると夫婦喧嘩の発生する確率が上がる、という話をよく見かけます。
実際に、我が家でもちょくちょく喧嘩というか、意見の食い違い/認識のズレが発生しています。

今回、私と妻の間で、離乳食の量から生じたコミュニケーションギャップがありました。

こういうコミュニケーションギャップって、もしかして仕事でも発生するかな。いや、仕事だったら発生しないけど甘えが生じがちな家族内だからこそ発生したのかな」という考えになったので、備忘として記録しておきます。

続きを読む

Elixirの関数名に感嘆符をつける意味

備忘。
Elixirの命名規約を見直していて、感嘆符(かんたんふ/exclamation mark(エクスクラメイション マーク))*1こと「!」が末尾についた関数をあまり意識していなかったので再確認。

その意味は「例外が発生する可能性のある関数/マクロに対して、習慣的に付与される*2」です。

*1:英語圏だと、a trailing bang が一般的?

*2:習慣的であるため、強制力はない様子

続きを読む

書籍「プログラミングElixir」の「1.5 練習問題」の注釈リンクについて

備忘。Elixirの技術同人誌を書くために、書籍『プログラミングElixir』を読み直してた時に気付いたのでメモ。

もしかしたら、電子書籍版なり以降の発行物では是正されているのかもしれないが、備忘として記録しておく。

なお、自分の所持しているものは物理本であり、『第1版第2刷発行(平成28年12月5日)』であった。

www.ohmsha.co.jp

shop.ohmsha.co.jp

続きを読む