Month12月 2011

月食前夜の月


TwitterでRTされているツイートをみて知ったのですが、明日は月食なんですね。(参考)
これは撮らねば、ということで、練習がてら前夜の月を撮ってみました。

家の裏手の公園に三脚を立て、カメラをセットし、レリーズを繋げ、地面すれすれの高さで月を導入する耳あてとダウンジャケットとマフラーを装備した男……
どう見ても不審者です本当に(ry

まぁ寒いので手早く導入して、どんどん試し撮りしていきます。
まずはM.ZUIKO DIGITAL 14-42mm F3.5-5.6 Ⅱ Rから。
レンズキット付属の標準ズームですね。
とりあえず、試しに広角側14mmで撮ってみる。
あ、ちなみにμ4/3なので、35mm換算だとちょうど倍の28mmになります。

OLYMPUS DIGITAL CAMERA

Continue reading


OCaml標準ライブラリの拡張


OCamlで使える標準ライブラリは、最初に触れた時こそ「すげー、集合とか標準で使えるの!?」とか思ってたものの、実際触っていると「あれ? Setってof_listないの?」とか「え? リストのconsって関数として用意されてないの?」とか「うわっ……私の年収、低すぎ……?」など、いろいろな不満が出てきます。最後のは関係ありませんが。

調べてみたところ、あれは標準ライブラリではなくすとっどりぶなのですね……
それならしょうがない。
普通ならCoreとかBatteriesとか入れるんでしょうが、変な依存性入れたくないですし、これまで組んだプログラムを修正するのも面倒なので、勉強も兼ねて自分で互換性持たせたまま拡張してみることにしました。
先日、OCamlでモナドっぽいものを作ったという記事を書きましたが、それも拡張の一貫ですね。
というわけで、覚え書きも兼ねて、詰まった部分などをまとめておきます。

Continue reading


Haskellの資料まとめ


モナドを勉強するに辺り、やはり進んでいるのはHaskellらしく、調べてるだけでHaskellに関する情報がぼろぼろ出てきたのでその辺をご紹介。

まず、「モナドのすべて」さん。
モナドの基礎についてかなり詳しく書かれています。
Haskellについて知らなくてもなんとなくはわかったので、特にOptionモナドやListモナドを実装する上で参考にさせて頂きました。

Continue reading


OCamlでモナドっぽいものを作る


ライブラリの拡充と関数型言語のお勉強を兼ねて、モナドっぽいものを実装して見ました。
単純にモナドをOCamlで使いたいだけならMonad拡張を入れる方が手っ取り早いですが、あまり外部ライブラリへの依存性を入れたくないのと、OCamlの記法の中だけでどこまで出来るか試してみたかったので。
ちなみに誤解を避けるため先に断っておきますが、自分はHaskellerではありません。
以下ではモナドに関してHaskellをかなり参考にしていますが、Haskellのモナドに対する勘違いなどが含まれている可能性があります。
ご了承下さい。

Continue reading


擬似中置記法


OCamlでは、modは特別扱いで中置記法として定義されています。

# (mod);;
- : int -> int -> int = 
# 5 mod 3;;
- : int = 2

たとえばこの別名でremという関数を作りたくても、これを中置記法で定義することは出来ません。

# let (rem) x y = x mod y;;
Error: Syntax error

これは、中置演算子として定義できる文字列が、記号の特定の組み合わせ、もしくは予約された文字列、というふうに決められているからですね。
中置演算子として予約された文字列にはor,mod,land,lor,lxor,lsl,lsr,asrがあります。
(参考:公式マニュアルのinfix-opの項)

Continue reading