Date2011年12月6日

擬似中置記法


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


邦文技術書の電子書籍サイトまとめ


とりあえず調べられた限りで、邦文で書かれた技術書を販売しているサイトをまとめて見ました。
ちなみに、技術書はいつでもリファレンス出来ることを重視してるので、任意の電子書籍リーダーや媒体で読め、また配布終了のリスクなどのないダウンロード形式のサイトのみを取り上げます。
つまり、専用アプリでのみ読める・ストリーミングでのみ読める、といったサイトは、今回対象外としています。
日経BPのなぜシリーズなんかはぜひとも電子書籍で読みたいのですが、PCかiOSからしか閲覧できないのが残念です。
数学ガールもiOSのみですし……
出来れば、ePubやPDF配信がデファクトスタンダードの時代になってほしいものです。

Continue reading