月食2012

2011-12-11 天文

前回の月食前夜に引き続き、昨日の月食を撮って来ました。
半影月食は撮影してもあんまりわからないだろうということで、21:30過ぎに出陣。
撮影場所は前回と同じく家の裏手の公園です。

出発が遅かったので既に少し欠け始めています。
この時点では、薄雲が月にかかっていたためだいぶ月が暗く、昨日の設定では殆ど写りませんでした。
この後も数枚露出を変えながら取るものの、雲が凄い勢いで流れているせいか光量が変化して調整が難しく、全体にボケ気味の写真に……
ギャラリーに上げた写真はだいぶ選別していますが、実際にはボケの嵐でした。

Continue reading

月食前夜の月

2011-12-09 天文

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

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

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

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

不動点と不動点コンビネータ

ある関数 f(x)について、 x_0 = f (x_0)となる x_0が存在するとき、 x_0fの不動点といいます。
また、 x_0に十分近い xに対し、列 x, f(x), f(f(x)), \ldotsx_0に収束するとき、 x_0f の吸引的不動点である、といいます。
(参考:Wikipedia)

吸引的不動点は、値が変化しなくなるまで関数適用を繰り返すだけなので、プログラムで簡単に書くことができます。
以下のfixは初期値xからfの吸引的不動点を求める関数です。
汎用性のため、一致検査関数はequalとして引数で取ります。

let rec fix equal f x =
  let x' = f x in
    if equal x x' then x
    else fix equal f x'
Continue reading
Older posts Newer posts