タグ

2013年10月9日のブックマーク (3件)

  • 遅延評価と末尾再帰と余再帰 - あどけない話

    遅延評価では再帰の効率はどうなるかという問題です。Real World Haskell で、末尾再帰は重要だと言った後に、遅延評価では末尾再帰なんて気にするなとちゃぶ台を返しています。ようやく haskell-cafeで答えを見つけたので、Luke Palmer さんの許可を得て訳を公開します。 Luke Palmer さんの説明 私が Haskell でプログラミングするときは、通常関数を末尾再帰にはしません。(Int や Bool など)正格な値へ畳み込む場合、末尾再帰を使うのはよいことです。しかし帰納的な遅延構造を作成する場合、関係する用語は(私の記憶が正しければ)「余再帰」(corecursion)であり(訳注:mapは再帰かつ余再帰だそうですが、専門的すぎるので普通の再帰でいいと思います)、末尾再帰とはまったく異なります。 リストに対し末尾再帰で map する関数を例として考えま

    遅延評価と末尾再帰と余再帰 - あどけない話
  • なぜ Haskell ではキューが軽んじられているか? - あどけない話

    Haskell ではキューが欲しくなったら Data.Sequence を使えと言われる。Seq は両端キューだし、シーケンスとして使えば、連結(><)や分割(splitAt)が、ならし計算量で O(log N) という優れものである。しかし、内部がfinger treeなのでコードが複雑なのと、計算量が「ならし」なところが玉に傷である。 もっと単純で、最悪計算量を保証する(両端でない)キューが標準で提供されてもいい気がする。その候補には、リアルタイムキューがある。どうして標準でキューが提供されないのだろう? 僕なりの答えは「需要がない」だ。 問題を解くときにスタックはよく使うが、キューが必要な問題はそんなに思いつかない。僕はネットワーク屋なので、もちろんルータにはキューが必要なことは知っているが、それ以外で有名どころと言えば幅優先探索ぐらいだ。 幅優先探索 でも、Haskellではキュー

    なぜ Haskell ではキューが軽んじられているか? - あどけない話
  • ファイバー束 - Wikipedia

    ファイバー束(ファイバーそく、英: fiber bundle, fibre bundle)とは、位相空間に定義される構造の一つで、局所的に 2 種類の位相空間の直積として表現できる構造の事である。 概要[編集] 単位円 S1 と線分 I = [0, 1] の直積 S1 × I は円柱の側面になる。円柱の側面と似たような図形にメビウスの輪がある。局所的には S1 の一部と線分 I = [0, 1] の直積に見えるが、全体的には円柱と異なる図形になっている。このような局所的に直積として書けるという性質(局所自明性)を持った図形を扱うのがファイバー束の概念である。 この場合の S1 を底空間といい、線分 I をファイバー(繊維)という。ファイバーを底空間に沿って束ねたとき、上の例の円柱のように全体としても直積になっていれば、その全体を自明束(じめいそく)という。自明束は基的なファイバー束ではあ

    ファイバー束 - Wikipedia