2015-05-01から1ヶ月間の記事一覧
淡々と。 gist.github.com
ただひたすら書く。そろそろモジュールに分けた関数群を別ファイルに分離してもいいかも…。 gist.github.com
Rustでモジュールを定義する方法について。mod module_name { }で囲んだ範囲がモジュールになるらしい。また、モジュール内の関数の内、pubを付けなかったものはモジュールprivateな関数になる。useはそれが使われたモジュールのスコープ内でのみ有効、など…
お次はfilter。少しずつ関数が増えていく。 gist.github.com
まだまだ所有権の概念に慣れない今日この頃だが、とりあえずArc<T>でごまかしている。ともあれ、ようやくList上の高階関数が揃ってきた。今回の難所はflat_map。間にconcat関数を定義してやることでなんとか実装。 gist.github.com</t>
map関数も欠かせませんね。というわけで: gist.github.com ループで回すのはめんどくさいので、fold_rightで実装しました。
fold_leftができたので次はfold_rightもできるよね、というわけで。 gist.github.com
Listを作ったので次はfold_leftだよねー、というわけで書いてみた。しかし、型を合わせるのに結構手間取ってしまった… gist.github.com
Vec<T>型を引数で受け渡して、それをList<T>型に変換することで、とりあえずリストの生成を簡単にすることができた。しかし、ここでT : Copy にしちゃったからList<List<>>型はnew_list関数では作れない気がしてきた。 gist.github.com</list<></t></t>
とりあえず関数型プログラミングには必須だろうということで、Listを定義してみた。コンスセルのtail部分にいちいちBox::newつけなきゃならない(理由はわからなくもない)のがめんどいけどどうにかならないものか…。 gist.github.com
Hello, World!やったので次はHello, Macro!ですね。というわけで、サンプルコードを真似して書いてみました。 macro_rules! hello { () => ( println!("Hello, Rust Programming Language"); ) } fn main() { hello!(); } () が空引数にマッチするパターンを…
Rustには高機能なマクロがあると知って、ちょっと勉強を始めてみることにしました。飽きたらそこで止めるかもしれませんがご了承ください。 まずは定番のHello, World!書いてみましょう。 fn main() { println!("Hello, {rust}", rust = "Rust Programming L…