ArrowLoopと不動点コンビネータに関するsyaminoのブックマーク (2)

  • トレースと不動点 -

    Traced Premonoidal Categoriesを読んだ。ある種のモノイダル圏では、traceと不動点作用素(正確には、parametrized fixpoint operatorでConway作用素と呼ぶらしい)が質的に同じものだという、なんか不思議な話。 元々は、traced monoidal categoryの定義を探してたのだけど、ここでの定義は、symmetricityを課しているので、ダメだった。symmetricityを仮定しないtraced monoidal categoryの定義があるのかどうかは知らない(Joyal,Streetはbraidingの重要性をかなり早い時期に気付いてた人(というか、圏論的な文脈に限れば最初に言い出した人かもしれん)なので、symmetricityを仮定するようなことはしない気もするけど)。まあ、数学的に見ると、symmetric

    トレースと不動点 -
  • Control.Arrowでエラトステネスの篩, 階乗 - プログラムモグモグ

    エラトステネスの篩の前に, 階乗をArrowでやります. 理由はおいおい分かります. 階乗を普通に fact n = if n == 0 then 1 else n * fact (n - 1) main = print $ fact 10 3628800 流石にこれはいいですね. はい. Arrowに急ぐ前に, まずfixを使って書きましょう. 色々考えましたが, fixを介してArrowに行くのが一番近道です. fix f = f (fix f) fact = fix fact' fact' f n = if n == 0 then 1 else n * f (n - 1) main = print $ fact 10 3628800 さっきのfactを, 第一引数で関数を回すようにしてやるだけですね. 階乗をArrowLoopで さて, fixで書けたらもうお手の物です. というのも

    Control.Arrowでエラトステネスの篩, 階乗 - プログラムモグモグ
  • 1