ようこそ。睡眠不足なプログラマのチラ裏です。

プログラミング

ほむ。F#でプログラミング言語「ほむほむ」して、さらに「ほむほむ」した

元ネタは、ゆろよろさんの プログラミング言語「ほむほむ」 - ゆろよろ日記(id:yuroyoro) http://d.hatena.ne.jp/yuroyoro/20110601/1306908421 F#でプログラミング言語「ほむほむ」以前実装したF#でGrassなプログラムをちょっと改造しただけの手抜きだが、 …

F#でsleep sort

追記しました 元ネタは、以下あたり。 常識を覆すソートアルゴリズム!その名も"sleep sort"! - Islands in the byte stream http://d.hatena.ne.jp/gfx/20110519/1305810786 Sleep sortの各言語での実装まとめ – Yuyak http://www.yuyak.com/1339 ただいま…

F#では、パターンマッチを「match x with」と書く流派と「x |> function」と書く流派がございます。

とあるF#er達のつぶやき F#トリビア。いにしえからの言い伝えによると、パターンマッチを「match x with」と書く流派と「x |> function」と書く流派がございます。後者の方がネストを浅く保つことができるので私は好きです。 #fsharp2011-05-12 16:35:17 via…

判別共用体のケース識別子は直接公開せず、インターフェイスをアクティブパターンで提供するのがスマートっぽいよ

とあるF#er達のつぶやき 判別共用体は直接公開してどうのこうのしたりするよりかは、内部的な実装は判別共用体でやって、アクティブパターンでインターフェイスを提供するというのがスマートっぽいよ。#fsharp2011-04-20 15:51:54 via Chromed Bird @zecl そ…

オブジェクト指向は、シンプルできれいだが脆い。関数型プログラミングは、強く美しいが複雑。F#はいろいろな書き方が混ぜこぜになるよ。楽しいよ。

オブジェクト指向プログラミングが好きだ。関数型プログラミングが好きだ。 オブジェクト指向プログラミングオブジェクト指向プログラミングは、コンテナの一般性を確保している点で優れている。 データと振る舞いをコンテナとしてまとめることで、プログラ…

F#で楽々breakとcontinue。継続モナドまじパネぇっす!

id:einblickerさんが、「F#で継続モナド - einblickerの日記」というステキな記事を書いてくださいました。グッジョブすぎる! 以前、F#で継続渡し形式(CPS)変換を抽象的に考えてみたら、それってつまりHaskellの継続モナドみたいなものでした。ということで…

Observableコンピューテーション式はモナド則を満たしているか否か。

前回のエントリ「F#でRxる。よく訓練されたF#erはコンピューテーション式をつくる。」で紹介いたしました、 Observableコンピューテーション式について補足します。モナド則を満たしているか否かについてです。 Haskellにおいて、モナドがモナド則を満たして…

F#でRxる。よく訓練されたF#erはコンピューテーション式をつくる。

いにしえからの言い伝えによると、よく訓練されたF#erはコンピューテーション式をつくるそうです。 Select Many: Reactive Extensions’ Mother Of All Operators (Chaining). お、SelectManyですね。 なるほどなるほど。計算を繋ぐもの。モナドですか。そこ…

Google Chrome拡張機能をつくってみた。「inject hatebu」を公開しました。

Google Chrome 拡張機能 「inject hatebu」を公開しました。 2011年2月5日(土)に行われました、「第55回 CLR/H 勉強会 雪まつりスペシャルデイ」にて、 マイクロソフトのジニアス平井さんが、IE9とHTML5についてお話してくださいました。IE9はデザインもすっ…

F#でSQL CLRしちゃうことは一応可能なんだけど、正式にはサポートはされていないのね。そりゃそうだよね。

追記あり なんとなく気が向いたので少しだけ。 主な環境 ・Windows 7 Home Premium ・SQL Server2008 ・F#2.0 まずはclr enabledの変更まず、SQL Server2008の構成オプションの 'clr enabled' を 0 から 1 に変更してSQL CLRを利用可能にします。 その後、RE…

ちょっと草植えときますね型言語で近況報告しますwWWwwwwパート2

お疲れさまです(本当の意味で)。以前、「ちょっと草植えときますね型言語で近況報告しますwWWwwww」という記事を書きました。 で、最近の私もやっぱりこんな感じです。 _, ._ ( ・ω・) んも〜 ○={=}〇, |:::::::::\, ', ´ 、、、、し 、、、(((.@) wvwwWWwW…

「Code Contractsで頻繁に使うのに、スニペット用意されてないじゃん!」とお嘆きの声に答えまして、とりあえず的に作ったC#のやつがあるので置いておきます。

以下が、「Code Contractsで頻繁に使うのに、スニペット用意されてないじゃん!」の追加の俺々コードスニペットたちです。 まぁ、なんで標準的に用意されていないのか、なんとなくわかるような気もしますけどね。 ちなみに、やつけ的にテキストエディタで作…

F#でもMoq使いたかったんだけど、なんかダメそうなのでRhino Mocksを採用しました。

タイトル通り、F#でもMoq使いたかったんだけど、なんかダメそうなのでRhino Mocksを採用しました。というメモ。 それ以上でもそれ以下でもありません。 F#でMoq利用を試みるも撃沈結論から言うと、F#とMoqの相性は最悪。 Moqは、F#で全く利用できないわけで…

いわゆる遅延リストとか遅延ストリーム。F# PowerPackのLazyListって、結局のところどんなことをしてくれているのか。

個人的に息詰まる毎日が続いておりますが、みなさんいかがお過ごしでしょうか(誰 今回は、F# PowerPack*1のLazyListをさわってみたので、そのメモ。 LazyListはいわゆる遅延リストあるいは遅延ストリームなどと呼ばれるもので、それをF#でお手軽に扱えるよう…

F#かわいいよF#。F#の並列処理や非同期計算の理解を深めるために、FSharpAsyncとFSharpAsyncBuilderのラッパーをC#で書いてみた。

ご存知、F#は並列処理や非同期処理について考慮されて設計された強力な言語です。 いくつかサンプルプログラムを書いて、わたしもその雰囲気については過去に簡単に確認していました。 しかし、FSharpAsyncやFSharpAsyncBuilder(computation expression)にど…

カスタム ビジュアライザって「刺身たんぽぽ」になりがちだよね。楽にカスタム ビジュアライザを量産して「たのしいデバッグ」を。

デバッガ ビジュアライザとはデバッガ ビジュアライザとは、Visual Studioでデバッグをしている時に、 オブジェクトの状態を照会することが出来る画面および、その機能のことです。 そうです。いつもお世話になっているアレです。たとえば、string型について…

実はオブジェクト指向ってしっくりきすぎるんです! 不変オブジェクトのすゝめ。

バグのないソフトウェアを作りたいお仕事では主にVB.NETとC#を。趣味のプログラミングでは関数型言語F#を利用しています。 私自身のF#スキル(関数型的な考え方)は、まだまだ実践レベルとはとても言えないシロモノだけど、 面白い発見と多くの可能性を感じら…

C#とF#で、ちょっと草植えときますね型言語 Grassインタプリタを実装してみました。

第47回 CLR/H 勉強会(4/17)に参加しました。今回で6回目くらいですかね。 楽しく有意義な時間を過ごせました。講師の方、参加者のみなさんどうもありがとうございました! 今回はじめて、わたしもライトニングトークに登壇させて頂きました。 もともと人前…

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

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

SilverlightやWPFやってっと、弱い参照のキーと値を管理するWeakDictionaryが欲しくなるよね。

「弱い参照」と「強い参照」.NET Frameworkでは、ガベージコレクションによってメモリが管理されます。 変数(フィールドやローカル変数など)に格納されている参照のことを「強い参照」と言います。 強い参照によるオブジェクトは、そのオブジェクトがアク…

C#で今風メタプログラミング。Expression Tree(式木)に慣れ親しもう。

久しぶりにExpression Tree(式木)をいじってました。 .NET Framework4では式木が大幅にバージョンアップして、複文や条件分岐、ループなどが表現できるようになりましたが、 それによってどんな面白いことができるかは、まだ模索中だったりします。 今回はと…

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

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

とある契約の備忘目録。契約による設計(Design by Contract)で信頼性の高いソフトウェアを構築しよう。

「より堅牢で正確性の高いソフトウェアを作りたいぜ!」と願う.NETデベロッパーお待ちかねの、 契約による設計(DbC)をサポートするCode Contractsが.NET Framework4より利用できるようになります。 C#をベースとして契約による設計をサポートする「Spec#」を…

拡張メソッドバブルのこのご時世、ふつうのデリゲートをジェネリックデリゲートに変換したいことってあるよね。

拡張メソッドバブルのこのご時世、ジェネリックデリゲートに対して拡張メソッドが定義されていることとかも少なくない。 ということで、ふつうのデリゲートをジェネリックデリゲートとして扱いたい!なんてケースもあるようなないような。いや、きっとありま…

MVVMパターンのViewModelで、INotifyPropertyChangedをいちいち実装すんのかったるい。かといって、AbstractなViewModelBaseは継承したくないでござるよ。

INotifyPropertyChanged インターフェースを実装した抽象クラス ViewModelBase は、残念な俺俺設計MVVMパターンでViewModelを実装する場合、INotifyPropertyChanged インターフェースを実装するのが面倒という理由もあって、 INotifyPropertyChanged インタ…

いまさらですが、VB.NETで「関数名に代入的な記法」で戻り値を決定するのが“やっぱりキモい”件。

ハイクの方で書いたネタですが、結構おもしろいネタだったので、 加筆修正などしてこちらにも投下しておきます。 なんぞこの記法。VBがマゾ言語と言われる由縁のひとつがこれだ。VBおよびVB.NETでは下記のような感じで関数を記述することができる。 (VB.NET…

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

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

C#でもLazy Evaluationしたいよね。カリー化しーの、遅延評価しーの、トツギーノ。

.NET Framework4.0には System.Lazy なんてものが追加されていて、 もしかして遅延評価標準サポートktkr?と、思わずwktkした人も少なくないのでは。 ですが、これはインスタンスの生成を遅らせるだけの代物でした。多くのC#erの期待は一瞬にして儚く散って…

なんぞこれ。コンストラクタパラメータが異常に大杉る・・・。バカなの?死ぬの?そういう場合はBuilderパターンを検討してみよう。

(追記:2009/11/18) id:Nobuhisaさんにお返事を頂きました。ありがとうございます! Effective JavaのアレをC#で - (hatena (diary ’Nobuhisa)) C#でBuilderを実装するにあたって、とても参考になりますので、こちらもぜひご覧ください。 引数大杉。Builderパ…

わー!taguoさんお久しぶりです。まさにメモウマ状態!!

前回のエントリメモ化を抽象的に考えて一般化する。これぞジェネリックプログラミングの神髄!なんつってーをうけて、 taguoさんが、メモ化について良質な記事を書いてくださいまいました。ありがとうございます! めもだいすき - 一生酩酊 まさにメモウマ状…