kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

2015-05-01から1ヶ月間の記事一覧

Rustのおべんきょう(12) - Hello, List(count) -

淡々と。 gist.github.com

Rustのおべんきょう(11) - Hello, List(contains) -

ただひたすら書く。そろそろモジュールに分けた関数群を別ファイルに分離してもいいかも…。 gist.github.com

Rustのおべんきょう(10) - Hello, module -

Rustでモジュールを定義する方法について。mod module_name { }で囲んだ範囲がモジュールになるらしい。また、モジュール内の関数の内、pubを付けなかったものはモジュールprivateな関数になる。useはそれが使われたモジュールのスコープ内でのみ有効、など…

Rustのおべんきょう(9) - Hello, List(filter)

お次はfilter。少しずつ関数が増えていく。 gist.github.com

Rustのおべんきょう(8) - Hello, List(concat, flat_map) -

まだまだ所有権の概念に慣れない今日この頃だが、とりあえずArc<T>でごまかしている。ともあれ、ようやくList上の高階関数が揃ってきた。今回の難所はflat_map。間にconcat関数を定義してやることでなんとか実装。 gist.github.com</t>

Rustのおべんきょう(7) - Hello, List(map) -

map関数も欠かせませんね。というわけで: gist.github.com ループで回すのはめんどくさいので、fold_rightで実装しました。

Rustのおべんきょう(6) - Hello, List(fold_right) -

fold_leftができたので次はfold_rightもできるよね、というわけで。 gist.github.com

Rustのおべんきょう(5) - Hello, List(fold_left) -

Listを作ったので次はfold_leftだよねー、というわけで書いてみた。しかし、型を合わせるのに結構手間取ってしまった… gist.github.com

Rustのおべんきょう(4) - Hello, List! そのに -

Vec<T>型を引数で受け渡して、それをList<T>型に変換することで、とりあえずリストの生成を簡単にすることができた。しかし、ここでT : Copy にしちゃったからList<List<>>型はnew_list関数では作れない気がしてきた。 gist.github.com</list<></t></t>

Rustのおべんきょう(3) - Hello, List! -

とりあえず関数型プログラミングには必須だろうということで、Listを定義してみた。コンスセルのtail部分にいちいちBox::newつけなきゃならない(理由はわからなくもない)のがめんどいけどどうにかならないものか…。 gist.github.com

Rustのおべんきょう(2) - Hello, Macro! -

Hello, World!やったので次はHello, Macro!ですね。というわけで、サンプルコードを真似して書いてみました。 macro_rules! hello { () => ( println!("Hello, Rust Programming Language"); ) } fn main() { hello!(); } () が空引数にマッチするパターンを…

Rustのおべんきょう(1) - Hello, World! -

Rustには高機能なマクロがあると知って、ちょっと勉強を始めてみることにしました。飽きたらそこで止めるかもしれませんがご了承ください。 まずは定番のHello, World!書いてみましょう。 fn main() { println!("Hello, {rust}", rust = "Rust Programming L…