Microsoft MVP for F# を受賞しました
F# MVP 国内第2号もしくは F# MVP のイケてない方のいげ太です。
F# MVP が2人も誕生したってことで、割と Microsoft も F# に本気だなーとか。
これからも相も変わらず F# F# 言っていきたいと思います。よろしくお願いします。
| 固定リンク | コメント (2) | トラックバック (1)
F# MVP 国内第2号もしくは F# MVP のイケてない方のいげ太です。
F# MVP が2人も誕生したってことで、割と Microsoft も F# に本気だなーとか。
これからも相も変わらず F# F# 言っていきたいと思います。よろしくお願いします。
| 固定リンク | コメント (2) | トラックバック (1)
よく訓練された C# 使いならばご存じの通り、C# に末尾最適化はない。より正確に言い換えるなら、C# 4.0 コンパイラは 'tail.' プリフィックスを付与しない。このことによって、C# プログラミングにおいては、再帰はおよそ避けるべきものとして認識されている。しかし。
しかしポインタと再帰の明らかな重要性以上に重要なのは、これらの学習から得られる精神的な柔軟さと、これらを教えている授業からふるい落とされないために必要な精神的態度が、大きなシステムを構築する上で欠かせないということだ。ポインタと再帰には、ある種の推論力、抽象的思考力、そして何よりも問題を同時に複数の抽象レベルで見るという能力が要求される。そしてポインタと再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。
ならば。もしあなたが再帰の得意でない C#er であるならば。末尾最適化を備えた .NET 言語である F# との対比によって再帰に入門してみるってのはどうか。
| 固定リンク | コメント (1) | トラックバック (0)
[Updated 2011/02/11: コメント欄で BLUEPIXY さんからツッコミいただいた件について記事に追記・修正。]
タプルの真実あるいは暗黒面。
| 固定リンク | コメント (10) | トラックバック (0)
この記事は F# Advent Calendar jp 2010 の第3回目です。
Seq モジュールの関数/値について、それらの持つ能力から分類してみます。すなわち、念能力列能力による分類。
| 固定リンク | コメント (1) | トラックバック (1)
この記事は、以下の Don Syme 氏のブログ記事の私訳です。
待ちに待った F# + .NET 4 の無償開発環境(Visual F# 2010 Express 相当)がこれで整いましたね。
| 固定リンク | コメント (2) | トラックバック (3)
F# には pairwise なる関数がある。文章で説明するよりも、以下の F# Interactive での実行結果を見てもらった方が、その動きを理解するには早いだろう。
> Seq.pairwise [1..5];; val it : seq<int * int> = seq [(1, 2); (2, 3); (3, 4); (4, 5)]
つまりはそういうことだ。まあ、なんだ、植木算には使えそうだね。ところで僕は pairwise したシーケンスを元のシーケンスに戻すための unpairwise 関数について考えてみたいんだ。キミならどう書く。
| 固定リンク | コメント (1) | トラックバック (0)
当記事は Simple-Talk.com の著作物である以下の記事を和訳したものです。
Copyright を確認の上、個人的かつ非営利な目的において当記事を公開いたします。もし問題があればすぐに削除いたしますのでご連絡ください。また、誤訳やよりよい翻訳があればぜひご指摘いただきたく存じます。
| 固定リンク | コメント (13) | トラックバック (0)
列挙型の列挙子を列挙したいというのは割とよくある話で、列挙子の名前と値を辞書として取り出すメソッド(関数)を作っておくと便利です。
| 固定リンク | コメント (0) | トラックバック (0)
[Updated 2010/02/21: すこし修正。]
[Updated 2009/11/24: 間違いを訂正し、全体的に文章の修正を行いました。]
.NET 4 から、BCL にタプルが入りました。
結局、タプルは参照型として実装されましたが、それはほとんど値型として振る舞うべきものであるようにも見えます。タプルはただ複数の値をまとめるためにあり、興味があるのはそのまとめられた値の方です。となれば、なにか 2 つのタプルを比較するときには、タプルのインスタンスの参照比較ではなくタプルの中身の値によって比較を行いたい、という場合がほとんどではないでしょうか。
| 固定リンク | コメント (3) | トラックバック (0)
MailboxProcessor を使うと、actor とか agent とか message-passing とかなんかそういうアプローチでコードが組めるらしい。で、ピンポンに代わるもうすこし楽しげな題材として、じゃんけんでやってみる。
| 固定リンク | コメント (0) | トラックバック (0)
すっかり秋めいてきましたね。読書の秋です。
・あなたが好きなその本をわたしはまだ読んでいないかもしれない
ということで、きちんとした書評でなくても、新刊でなくても (むしろ古いほうが掘り出し物っぽいかも。でも入手困難だとしょぼーんだなあ) いいですから、あなたの好きなその本を紹介してください。 できればなぜ、どの辺が好きなのか書いてくださるとうれしいです。
ということで、ちょっと前の記事への反応ですが、『図解主義!』をおすすめします。
| 固定リンク | コメント (1) | トラックバック (0)
前回 2 つのエントリでは、文字列全体をいったん Shift_JIS 文字列に変換してからバイト単位での切り出しを行い、そして Unicode 文字列に戻す、という方法をとった。StrConv が使えるか、ADODB.Stream を使わざるを得ないかで、コードを大幅に変えなければいけないのは見てきたとおりだ。
では、1 文字ずつ ASCII コードを取り出してチェックするならどうか。(ほぼ)共通のコードでまかなえる。
| 固定リンク | コメント (0) | トラックバック (0)
VBS には StrConv がない。Byte 配列もうまく扱えない。
COM に頼るしかない。
| 固定リンク | コメント (0) | トラックバック (0)
すこし探して見つからず、めんどくさくなって自作する。
[追記 at 2009/09/08] 境界値バグを修正。 [/追記]
| 固定リンク | コメント (0) | トラックバック (0)
載ってるみたい。
特集2:Visual Studio 2010でプログラミングはこう変わる
Part1:すぐ使いたくなる新機能
Part2:普及したマルチコアを活用する
Part3:新プログラミング言語「F#」
明日、立ち読みしに買いに行ってみるか。
| 固定リンク | コメント (2) | トラックバック (0)
別件で調べ物をしていたら、はてなダイアリーをブログモードで使ったときの記事 URL の最後尾に付くなんやようわからん 10 桁くらいの数値は UNIX 時間(エポック時間)なるものであると知って、ほへーっとアホ顔をさらしているのは、夏の熱さのせいじゃない。
| 固定リンク | コメント (0) | トラックバック (0)
F# は、いまのところ、ファンクタを直接サポートしていない。ただし、将来の拡張のために functor キーワードが reserve されていたり、object expression が割とファンクタ的な用法で使えたりするような気がする。
| 固定リンク | コメント (0) | トラックバック (0)
ぱいぷらいんが あたいのほかに ながすもの なーんだ
ひんと いちでなくなっています
type Foo<'T>(v: 'T) = member x.Value = v let foos = [ Foo(1); Foo(2); Foo(3) ] let ns = Seq.map (fun foo -> foo.Value) foos // (1) let ms = foos |> Seq.map (fun foo -> foo.Value) // (2)
| 固定リンク | コメント (0) | トラックバック (0)
最近のコメント