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

F#

F#で順列(Permutation)と組み合わせ(Combination)。YOU、Listモナドしちゃいなよ。集合モナドもあるよ。

以前、C#で順列(Permutation)と組み合わせ(Combination)をすべて列挙してみようという記事を書きました。 今見ると、前に思っていた以上に「しょっぱいなぁ」と思わざるを得ませんが、C#で書き直すつもりになれません。 今回は、超イケてる言語のF#で書きま…

FizzBuzz問題から学ぶモナド

前回のエントリでモナドについて熱く語りました。今回はゆるいモナドの雑記です。 モナドを利用してFizzBuzz問題を書いてみることで、「モナドってなんなん?なにしてくれちゃってるん?」ということが、 もしかしたら分かるかもしれないよ、という息抜き的…

快刀乱麻を断つモナド - F#とIOモナドとコンピューテーション式の奥義と

,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i| }! }} //| |l、{ j} /,,ィ//| 『F#でIOモナドっぽい何かを作ろうとしていたら、 i|:!ヾ、_ノ/ u {:}//ヘ いつのまにか、全然別モノのLazyモナドをつくっていた。』 |リ u'…

オープンソースカンファレンス2011 Hokkaidoに行ってきた。「後悔なんて、あるわけない」

セミナーとか・WebMatrix を使ってライブで作ろう! スマートフォン対応モバイル ASP.NET Web アプリ @jsakamotoさん。「オレのぐっときた」スマホアプリをライブコーディングでサクっと作る!坂本さんがとても輝いていました。 ・テスト駆動開発による安心開…

ほむ。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 そ…

独習ASP.NET第3版を頂きました。

3月26日に参加した第56回CLR/H勉強会にて、WINGSプロジェクトさんより「独習ASP.NET第3版(翔泳社)」を頂きました。 WINGSプロジェクトさん、翔泳社さん、id:naoki0311さん*1、CLR/Hスタッフの皆さん、どうもありがとうございます。 独習ASP.NET 第3版作者: …

オブジェクト指向は、シンプルできれいだが脆い。関数型プログラミングは、強く美しいが複雑。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ですね。 なるほどなるほど。計算を繋ぐもの。モナドですか。そこ…

第54回CLR/H勉強会発表資料を公開します。

第54回CLR/H勉強会(2011/01/15)にて、3つのセッションと、LTを行いました。 そのときの発表資料をSkyDriveにて公開します(5.3MB)。 01オブジェクト指向と契約による設計 ・オブジェクト指向と契約による設計.pptx 02Code Contracts入門 ・Code Contract入門…

モナディックなパーサ・コンビネータFParsecを使おう。てゆうかParsec(Haskell)のApplicativeスタイルがやばい。

Parsec(Haskell)のApplicativeスタイルがやばすぎるので、FParsecでApplicativeスタイルしてみた。 FParsecとはFParsec とは Haskell のパーサ・コンビネータライブラリ Parsec をF#に移植したものです*1。 では、パーサ・コンビネータとはなんでしょうか。…

C#からF#のクロージャを利用するには、こんな風にしたらいんじゃないの的サンプル

実践 F# 関数型プログラミング入門作者: 荒井省三:いげ太出版社/メーカー: 技術評論社発売日: 2011/01/07メディア: 大型本購入: 6人 クリック: 264回この商品を含むブログ (26件) を見る まず、書籍のご紹介をさせていただきます。 荒井さん、いげ太さん共著…

メモ〜化したりスマス。 Memoization and Tail Recursive Function

のぶひささん(id:Nobuhisa)が、魔法的メモ化関数を書いてくださいました。 めもりんこ - (hatena (diary ’Nobuhisa)) 非常にふつくしいので、ぜひご覧になってください。 このエントリは「F# Advent Calendar jp 2010」第16回のものです。F# Advent Calendar…

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

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

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

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

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

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

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)…