Data Recursion

インチキデータ再帰と単位換算

[追記:データ再帰を使ったコードを書こうと思っていたのですが、出来上がったものはデータ再帰に放っていませんでした…とほほ…/追記] また、データ再帰のことです… Recursive Monadic Bindingsの論文などを眺めていると、よく出てくるのが電子回路のサンプ…

fixを無限再帰させないもう一つの方法

引き続きfixのことです…昨日の文章を書いた後、しつこくRecursive Monadic Bindingsの論文を眺めていました…この論文は主にモナド関数を使ったfixの話なのですが、例のいくつかを眺めていてもfixの使い方が fix :: ((a -> a) -> a -> a) -> a -> a ではなく …

fixを使うためのヒント

効率化の話はなんだか疲れるので、またデータ再帰の話へ脱線… id:dachs_hippoさんのfixに関する記事をボーっと読み返していてあることに気づきました…氏のサンプルのひとつは階乗の計算だったわけですが: import Data.Function g :: (Int -> Int) -> Int ->…

データ再帰という考えと双方向リスト

今日はちょっとコードの効率化の話をいったんお休みして、別の話を書きたいと思います。以前に書いたControl.Arrow.loopでも実はさりげなく出ていたのですが、Haskellではletとwhere節の部分でちょっと変わったことができます。Control.Arrow.loopの定義を見…

ArrowLoopとCircularPrograming

こうゆう問題を考えて見ましょう。数字の入ったリストがある。そのリストの各要素をそのリストの最小値で引いた値を返す関数decWithMinを書け。つまり、decWithMin [5, 10, 20, 4, 3, 100] => [2, 7, 17, 1, 0, 97]そんなの簡単じゃんと: decWithMin ls = m…