読者です 読者をやめる 読者になる 読者になる
ようこそ。睡眠不足なプログラマのチラ裏です。

F#でテトリス。VS2010 RCまたはVS2010評価版で動くソースです。

というわけで、さっそくVS2010評価版をインストールしてみましたよ。めでたいですねw みなさんもデフォルト言語はF#に設定しましょう。そうしましょう。いやいや、そんなこと言わずに・・。 F#の仕様もこの短い期間でいろいろと変更が加わりました。 以前書…

「ハッカーのたのしみ」はかなりの良書。いまさらFlagsAttributeのレシピ、リターンズ。.NET FrameworkにBitCountくらい標準であってもいいのにね

以前、FlagsAttributeとビット演算のちょっとしたレシピという記事を書きました。 ご覧頂くとわかるように、とてもダサい実装になっています。記事を掲載してすぐに知人からツッコミがありました。 ツッコミがあったときにすぐに続編記事を書いて訂正しよう…

F#でもdynamic(動的型付け)したかったけど・・・、The ? Operatorで我慢の子。

C#4.0およびVB10で利用できるようになった、System.Dynamic.ExpandoObjectクラス。 これはDLR(動的言語ランタイム)の相互運用モデルのひとつとして機能する。 例えば、ExpandoObjectクラスのインスタンスを、IronPythonの関数に渡すことができる。 このSyste…

F#でMVVMパターン。はじめてのWPFプログラミング。ModelとViewModelをF#で、ViewはXAMLとC#で。

遅ればせながら「WindowsForm終了のお知らせ」を感知WPFに関しては、仕事で使う機会もなく、自宅に満足な開発環境もなかったという理由で、 関連記事の流し読み程度はしていましたが、基本華麗にスルーしてきました。 しかし、Windows7が好感触だったり、今…

この関数呼んだら毎回超モッサリするんだけど?だったらメモ化とかしてみたら?というただのメモ

メモ化とはプログラムを高速化するための最適化技法のひとつで、 関数呼び出しの結果を保持しておいて再利用するというものです。 1度呼び出された関数が再度呼び出されたときに再計算をせずに、保持しておいた値を再利用する手法です。 具体的には、キーと…

F#でもオブジェクト指向したい。手始めにC#で書いたUndo,Redoの実装を移植してみました。あれ?F#にはprotectedアクセシビリティないの?ぐはぁ

F#は.NETの第一級言語だからオブジェクト指向だって余裕でできるよ関数型の考え方に基づいて、汎用的に使えるUndo,Redo機能の実装しようと考えたとき、 関数型言語のノウハウがない自分には、シックリくる良い案が全く思い浮かびませんでした。 F#は関数型パ…

F#で継続渡し形式(CPS)変換を抽象的に考えてみたら、それってつまりHaskellの継続モナドみたいなものでした。ということで継続ワークフロー(簡易版)作った。

[前置き] 継続とはプログラミングにおいて「継続」とは、ある計算のある時点における「残りの計算」を表す概念のこと。 つまり、ある計算過程の瞬間におけるその過程の未来全体を表すものを意味する。 プログラミング言語で継続を扱う機能を導入すると、ユー…

ループを使わずに1から10までの総和を表示するプログラム

何故か流行ってる「ループを使わずに1から10までの総和を表示するプログラム」というお題 F#余裕のワンライナー #light {1..10} |> Seq.fold (+) 0 |> print_any 書いた。オチはない。 追記: とゆうか、F#にもsumありましたね。気付かなかったw #light {1.…

F#で言語指向プログラミング(LOP)のアプローチ。Seqを扱うための簡単なワークフローを作って、ワークフローを味見してみよう。

F#では「ワークフロー」という機能を備えることで、言語指向プログラミング*1のアプローチがし易くなっている。 これは開発者にメタプログラミング、DSLといった柔軟性を備えたライブラリを作成する機会を、 より多く与えてくれるのではないだろうか。この機…

F#でStateモナドしてみよう。そうですよね、副作用は怖いですものね。

id:NobuhisaさんのWorkflowでモナド - (hatena (diary ’Nobuhisa))に触発されてF#でStateモナドしてみました。 ですが、Haskellのド素人でF#初心者なのでいろいろと間違っているかもしれません。 とりあえず的に、取り急ぎコードをうpしておきます。(F#CTP)…

F#でテトリスを実装してみました(10年ぶり2回目)。

F#2.0で動作するコードはこちら↓ F#でテトリス。VS2010 RCまたはVS2010評価版で動くソースです。 ※以下の記事の内容は古くなっています。 モンハン3の狩猟生活に忙しい今日この頃ですが、 合間を縫って、F#でテトリスを実装してみました。 F#の勉強をするに…

ゆの in F#

懐かしの「ゆの in language」を引っ張り出してきてF#で書いてみた。 ちょうど1年前くらいに流行っていたネタですね。月日が経つのは早いなあ。 #light open System let X =() let __ = () let (/) _ _ = () let (<) _ s = printf "ひだまりスケッチ365%s" …

F#でもジェネリックオペレータみたいな。2つの引数を取る関数を中置演算子にしちゃうよ。

以前、C#で「演算子オーバーロードを活用してジェネリックオペレータを作る。それは即席自作演算子的な何か。」を書きました。 F#の方がより利用価値が高いっぽいかなーと思って、F#でも書いてみました。 #light open System (* T Combinator Thrush 鵺鳥 λa…

F#のアクティブパターンがふつくしすぎる。あらまほしき言語なり。

最近、C#ほったらかしてF#でいろいろやってます。F#にお熱です。 OCamlらくだ本を読み返しつつ、いげ太さんのブログやdeko_ponさんのF#入門などで勉強しています。 というわけで、また息抜きに当ブログ恒例の「世界のナベアツ問題」(風化問題ってレベルじゃ…

俄仕込みのF#でケブンッリジ関数。パイプ演算子って直感的で素敵だよね。

前回のC#版に続きまして、息抜きを兼ねて俄仕込みのF#でケブンッリジ関数を書きました。 #light open System open System.Text.RegularExpressions let str = @"こんにちは みなさん おげんき ですか? わたしは げんき です。 この ぶんしょう は いぎりす …