閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

2008-02-01から1ヶ月間の記事一覧

パイプで遊ぶ

Pipeline operatorを見て、ただ関数呼び出しの変形をしているだけで何が嬉しいのだろうと思っていた頃が私にもありました(AA略)。関数呼び出しが何重にもなっているとありがたさが実感できる気がします。 let H dummy = printf "H" let e dummy = printf "e"…

pstade::egg::pipable

C++

ベイダー日記の方更新してから思い出したけど、C++でPipeline operatorのようなことって、pstate::eggで既にやっているのを見たような……。 http://vader.g.hatena.ne.jp/wata_d/20080221/1203583962 探したらありました。 #include <iostream> #include <pstade/egg/pipable.hpp> using namespa</pstade/egg/pipable.hpp></iostream>…

F#の Pipeline operator もどきをC++で実装してみた

C++

>演算子をオーバーロードして、F#の Pipeline operator のようなことをやってみました。 #include <iostream> #include <boost/function.hpp> using namespace std; int one() { return 1; } int two() { return 2; } void print_func(int n) { cout << n << endl; } struct print_obj { vo</boost/function.hpp></iostream>…

Pipeline operator

F#

> 演算子を使用するとシェルのパイプのようなことができるようです。演算子の左辺の値を右辺の関数に渡してくれます。 let inc x = x + 1 let dec x = x - 1 do printfn "%d" (dec(dec(dec(inc 3)))) do printfn "%d" (inc 3 |> dec |> dec |> dec) 上と下の…

リストに対する操作

F#

整数のリストに含まれる各要素の合計を求める関数を書いてみました。リストは [0;1;2;3] などとして定義しますが、Haskellのように [0..5] みたいにも書けます。これは [1, 2, 3, 4, 5] と等価です。再帰を使ってみます。 let arr = [1..10] let rec sum_rec…

OCamlネタはありません、すいません

スーパーpre記法でOCamlの色分け利用すると、はてなキーワードのOCamlのページに載ってしまうらしい。なんだかノイズになってしまってますね。OCamlネタを期待されて来られた方には申し訳ないです。表に出てない文字列はキーワードとして拾わないようにして…

WPFでコントロールを入れ子にしてみる

WPFのコントロールは自由に入れ子にすることができるので、例えばコンボボックスの中にコンボボックスを入れるなどといった事も簡単に行えます。コンボボックスの各要素をチェックボックスにしてみます。 #light #I @"C:\Program Files\Reference Assemblies…

F# で WPF

WPFにも挑戦してみました。Windowにコントロールを追加するメソッド(AddChild)が外部からアクセスできないので芋づる式にクラス定義と継承までやってしまいました。理解はしていません。MSDNブログの Learning WPF through F#, and vice versa, by John Liao…

F#

F#

関数型言語の勉強をしようかとF#をインストールしてみました。インストールしたら自動的に Visual Studio からプロジェクトを作成できるようになるようです。とりあえずこんにちは世界から。.NET Frameworkを使用できるので、フォームにボタンを置いて、ボタ…

CINT

C++

CINTというC/C++のインタプリタがredditで紹介されていたので試しに入れてみました。404 Not FoundWindows版はコンパイル済みのバイナリがあるので、それを使うと簡単です。cint.exeを起動して、適当に打ち込んでみます。 cint.exe> { char* str = "Hello wo…

プラズマテレビを買いました

先日Amazonで注文したテレビが届きました。ダンボールを縦にすると自分の首くらいまであります。あまりの重さにひぃひぃ言いながらダンボールから出し、やっと録画した番組を見られるところまできました。1時間以上かかった……。容量節約のために一番低い画質…

オーバーロード関数をアルゴリズムに渡す

C++

高階関数へオーバーロードされた関数を渡す - Faith and Brave - C++で遊ぼう関数オブジェクトをかますとキャストが不要になるようです。余計回りくどくなっている気もしますが……。 #include <string> #include <vector> #include <algorithm> using namespace std; double stod(const s</algorithm></vector></string>…

不完全クラスのdeleteに注意

C++

pImplイディオムを使っているところでメモリリークしていた。調べてみると、pImplクラスの解放をauto_ptrに任せていたのが原因らしい。orz // Hoge.h class Hoge { Hoge(); private: struct pImpl; std::auto_ptr<pImpl> impl; }; // Hoge.cpp struct Hoge::pImpl {</pimpl>…