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

lazy in Scala macro

プログラミング

めも

lazy は macro 展開前に部分的に desugar される。ここからいくらか実装を察することができる。

展開前

lazy val a = 10

展開後

{
  lazy <artifact> var a$lzy: Int = _;
  <stable> <accessor> lazy def a: Int = {
    a$lzy = 10;
    a$lzy
  };
  ()
}

ごま塩

雑談

ごま塩のごまと塩が均等に出てくる原理の説明に怪しいものを見つけた。

塩が小さい粒のままではゴマと比べ小さく比重も大きいため、次第に塩が下に沈み振ってもゴマのみが出てくることになりやすいが、塩を顆粒状にすることでゴマと比重を同程度にし、均等に出てきやすくするためである。

というもの。粒の大きさによって比重が意味ある程度に変わるとか自分の知っている科学とかなり違う…。比重のせいで沈みやすいという傾向を、粒を大きくして幾何的な制約により沈みにくくして中和するという感じな気がする。(教えて専門家さん!)多分、その辺の説明がうろ覚えになって混ざってしまったのだろうね。

自分はもともと山手線の車内放送で見かけたのだが、調べたところ Wikipedia (胡麻塩 - Wikipedia) にも同じように書いてあるのである程度流布しているガセっぽい。書いてておかしいと思わないのかな。なんだかなあ…。

ATS2

プログラミング

homebrew をなんとなく見てたら最近有名になりつつある ATS2 (ats2-postiats) があったので入れてみた。が、チュートリアルの通りに hello worldコンパイルしてみようとしたところ lib64 がないと言われた。なので以下のようにシンボリックリンク貼って解決。

$ ln -s /usr/local/Cellar/ats2-postiats/0.1.8/lib/ats2-postiats-0.1.8/ccomp/atslib/lib /usr/local/Cellar/ats2-postiats/0.1.8/lib/ats2-postiats-0.1.8/ccomp/atslib/lib64

ドワコン

コンテスト

出てみた。

開始前

『正の点数をとれたら上級者です』とかいう不穏なメッセージを目撃する…。

A

20 点しかないのでやるだけかなーと思ったけど全然そんなことなかった。 DP なのはわかったけど、苦手な数え上げが2段になっていて絶望する…。 1問くらい解こうと思って1時間粘って試行錯誤したけど諦めた。

B

さすがに非負の点数では帰れないので、Bの部分点を狙いに行く。 マッチングっぽい。 フルスタックで問題を解くのをポリシーにしていたけど、背に腹は代えられないので過去のコードをぺたる。 時間もないので小手先の枝刈りで満点も何とかならないかなあと思ったけど何ともならなかった。

結果

A問題しか解かなかった人より順位が上だったけど、その人達と違って風船は手に入らなかった…。

ドワンゴは本物の競技プログラマと本物のScalaプログラマも募集しているらしいです。

Scalac の最適化オプション

プログラミング

scalac は -optimise をつけるとより効率のよいバイトコードを吐きます。(安定性にちょっと不安があるけど…) ところで最適化オプションにはその他に -Yhoge 系のが 5 個あって、これと -optimise と両方つけるとより速くなるのかなんなのかググっても、マニュアル見てもよくわからない。 これまではとりあえず全部つけてみていた。

結論から言うと、どうやら -optimise は最適化全部 ON で、個別に ON/OFF したいときに -Yhoge 系を使うようである。ううむ。

確認方法は scalac -Xshow-phases の出力を見ました。一目瞭然でした。

風船配り

雑談

昔,JAGオンサイト会場での仕事が本当に技術系しかなかった頃は大半のスタッフは作問にしか興味がなく,現地スタッフが極端に少ないということが続いた.一番ひどかったのは mixi さんに会場を借りたときで, mixi さんに申し訳なく思った.人数が少なすぎて風船を配るなんて不可能だと思っていた.

でも次の年 CyberAgent さんを借りたとき,夏合宿での強い要望もあり風船配りをするようにした.相変わらず正規スタッフはほとんど来てくれなかったけど,たまたま来てくれた某イケメン競技プログラマーの威光か臨時スタッフがきてくれたので念願の風船配りを実際に行うことができた.(もっとも実現できた理由のもう1つは, mixi さんの会場で当日 pc2 のセットアップに失敗してしまったので,この年から使わなくなり,その手間がかからなくなったためであるが)

すると,次の夏合宿からは正規スタッフが風船配りという名目でオンサイトに戻ってくるようになった.(でも今までだって似た仕事に印刷用紙配りとかあったんだよ?)そして今年の夏合宿では人が余るくらいだった.昔,人がいないから仕事を増やすようなことはできないと思っていたのは実は逆で,風船配りのような一見無駄に見えるが,見た目は面白い仕事という口実を用意してあげないことには人を集められないということだった.

ボランティア組織の運営とは何なのか考えさせられる.