技術memo

関数型ゴースト

小ネタ

任意型リストのsplit/join

ご無沙汰してます。忙しさにかまけて、あまり技術の勉強メモすら捗らない昨今です。 Twitterでお題が出されていたので、それとなくF# でやってみました。

シーケンスのソート後の順番を、元の順番を保ったまま取得したい

Twitterでお題が出されたので、F# でやってみました。 sortして、indexとzipして、またsortし直すなんて、「ずいぶんとダサいコードを書いてるのね!」って思いました。*1 例のコードの「人」と「車」のデータ型にcarRankingとhumanRankingとがあるのも、型…

Scheme(Gauche)でポイントフリースタイル風味

;; リスト(ツリー)を平坦化する。 (define flatten (letrec ((flatten-rev (fold$ (lambda (x acc) (if (list? x) ;; xがlistなら再帰呼び出し結果をaccの先頭に追加 ((compose (fold$ cons acc) reverse flatten-rev) x) ;; それ以外なら単にxをaccの先頭に…

基礎プログラミング演習(1),(2)をF# でやってみた

元々お手本コードを割と関数型風に書いていたので、ほとんどそのまま一対一対応で移植する形になりました。 比較すると、記法がどれほど簡潔かわかるんじゃないでしょうか。

LINQでバッファリングしてみる

結局何がやりたいのかはよくわからなかったのですが、LINQ楽しいよLINQ、というお話です。たぶん。 前置き プログラムから動的に生成したSQLをDBに問い合わせすることって、よくあると思うんです。 例えばこういうSQLについて。 select * from product where…

再帰関数のメモ化(Memoization for Recursive Functions)とY Combinatorの速度計測

解説は前記事再帰関数のメモ化(Memoization for Recursive Functions)とY Combinator - 技術memo 以下、F# Interactiveに流し込むだけ。