No Such Blog or Diary
久々にHaskellでフィボナッチ数列の計算を書いてみた
とりあえず普通のHaskellプログラマが書くであろうフィボナッチ数列の計算:
fib = 1:1:[a + b | (a, b) <- zip fib (tail fib)]
Parallel List Comprehensions を使ってみた書き方:
fib = 1:1:[a + b | a <- fib | b <- tail fib]
Generalised (SQL-Like) List Comprehensionsを(無駄に)使った書き方:
fib = 1:1:[sum a | a <- fib, then group using (\b -> zipWith (\c d->[c,d]) b (tail b))]
こいつは -XTransformListComp で機能を有効する必要あり? とりあえず束縛時と使用時で変数 a の型が変わるのがまぎらわしい.ついでに using の後の関数の型が forall a. [a] -> [[a]] でないといけないのを時々忘れて怒られる.ついでに by をつけたときには forall a. (a -> t) -> [a] -> [[a]] でないと怒られる.第一引数の (a -> t) という型の部分には by の後に指定する式から作られる関数が渡されるので,そこでリストの要素を見て適当な型 t の要素に射影して,その結果を使ってリストの要素をリアレンジしても良いよと.でも,その関数以外ではリストの要素に触れてはいけないよと(forall がついてるから).むずい.
さらに -XViewPatterns を有効にして無駄に分かりにくい書き方をしてみる.機能の無駄遣い.
fib = 1:1:[sum a | a <- fib, then group using (\c@(tail->b)-> zipWith (\((:[])->c) d -> d:c) c b)]
とりあえず,変なプログラムを書いたおかげで Generalised (SQL-Like) List Comprehensions の使い方が分かった(元論文はだいぶ前に読んであったのだけど).
- Comments: 0
- TrackBack (Close): -
久々にHaskellでフィボナッチ数を計算する関数を書いてみた
fib((-1+)->n@((-1+)->m))|m<0=1|((,,fib n)m->(fib->x,_,y))<-()=x+y
ViewPatterns, PatternGuards, TupleSections の拡張機能を使ってみたかっただけともいう.
View patterns はパターン部分に計算を書けるしそれを連ねることもできるので(関数結合と逆向きだけど),なんとなくモナド(のbind演算子)でプログラムを書いている気分を味わえる気がする.Pattern guards はまあ面白い使い方がまだ思いつかない.Tuple sections は場合により便利だけど変なプログラムを書くのには使いにくいかも? λ式にも view patterns 書けるので,かっこを使いまくりな id 関数とか:
i=(\((,)() -> ((),x)) -> x)
ついでなので階乗を求める関数も.
fact n|1>n=1|((-1+)->fact->x)<-n=n*x
- Comments: 0
- TrackBack (Close): -
迷惑メールフォルダにまた3通
- 2011-09-26 (Mon)
- 一般
そのうちの一通:タイトル「test」で
test
まさに迷惑以外の何物でもない.
ちなみに,その一通前のメールはタイトル「twitterについて」で
より正確には 言わなくていい、言う側だけでなく聞かされる方の事も考えろ という基準に満たないという感想です。
身に覚えがないけどとりあえずブーメランだよね.意味のないメールを送りつけられる方のことは考えられないらしい.能動的に読む twitter はさておき,受動的に読まざるを得ないメールで上記の読み手に何の利益もないメールを送るとか常識的におかしいだろうに.
ま,迷惑メールの送り手が他人の迷惑考えられるわけないのだけど.
- Comments: 0
- TrackBack (Close): -
赤そばの花を見に出かける
去年行けなかった中川村の赤そばの花を見にいってきた.少々雲が多すぎたのが残念だったけど.

帰りは去年通行止めで通れなかった国道152の続き(大鹿村から分杭峠を経て北へ国道20号にぶつかるまで)を走ってきた.都合の良いことに松川から大鹿村へは県道59+22で真東に行くだけだったので.まあ,地蔵峠や青崩峠のような酷さは無く殆どの区間が快走路で少々微妙だったけど.
- Comments: 0
- TrackBack (Close): -
会議終了
- 2011-09-24 (Sat)
- 一般
僕らのお仕事はまだ終わらない.
色調補正→歪み補正→クロップ→ヤバイところを潰す→2箇所をPinP的に合成→指定解像度でエンコード→チェック
うん,面倒そうだ.とりあえず上からのオーダーに従ってゆっくりやるとしよう.1ヶ月くらいで.
閑話休題.
今日のネタ:「raw beer」
今日の疑問:「生でないビール」を注文するとどうなるのか?
- Comments: 0
- TrackBack (Close): -
電源ケーブルというか電気の認識というか何というかに関して思うところ
- 2011-09-23 (Fri)
- 一般
その先に稼働中の機器があることを確認せずに電源ケーブル引っこ抜くなバカヤロウ.
被害1:会議の発表を録画していたノートPCの電源が落とされ,その後バッテリー切れで録画中断.よって午後からの記録はなし.
被害2:別途カメラで録画したデータをコピー中にHDDの電源が落とされ,これまでの全録画データを格納しているHDDへのダメージ&コピー再実行による時間の無駄.まあ,データは3重にバックアップしてあるから大丈夫けど時間の無駄が痛すぎた.カメラがUSB3.0対応になってくれると幸せになれそう.
とりあえず今後の為の改善案:UPSを持ち歩く.電源は突如無くなるものだと認識.
閑話休題.
何も考えずにマイクのゲインを最大にしたり更にマイクヘッド叩いたりとかするのもどうかと.音響システム壊れるととても高いですよ? ガソリンスタンドの隣で花火するようなもん.
閑話休題.
会議室全体にタップを行き渡らせるために床にケーブルを敷いているのだけど,その固定の仕方がひどすぎるのもどうかと思う.というか,とても固定とは言えず,適当においたケーブルの上に養生テープの切れ端をちょっと置いただけな部分があったり,椅子を引いたらケーブルに乗り上げるか絶対に引っ掛けるような位置にテープ止めしていたり.データコピー中に暇だったので色々直しておいたけど.
もう少し文脈を読んで作業してよね…… ま,今日で作業は終わりで明日は撤収だけなのでどうでもいいか.初日にちゃんと文句を言っておければ良かった(そんなところに気を回す余裕はなかった).
- Comments: 0
- TrackBack (Close): -


