F#
Simple F# ViewModel for Silverlight MVVMという記事があったのでメモです。 基本的に、私が前に書いたのと同じようなコードになってるっぽいので少し安心です。括弧とかが無いぶんC#に比べてスリムになってるように感じますね。
メールアドレスが改行くぎりで列挙されてるテキストから重複がないか確認しないといけなくなったので、どうせなのでF#で書いてみた。どうだろう?まだまだスマートに書けるかな・・・。 open System open System.IO let distinctCheck (stream : StreamReade…
fparsecというパーサに手を出してみましたが、まだ力不足で使いこなせる気がしなかったので基本に戻ってきました。今日は悲しいかな例外です。 例外は、C#の例外と同じものだと思ってもらってOKだと思います。私はそう思ってます。F#での例外の定義の仕方は…
今日は、判別共用体というものをやってみようと思います。今までちょろっと使ってきたoption型とかも判別共用体だったりします。例えば、同じOption型なのに「Some 値」という値やNoneという違う種類の値を入れたりすることが出来ます。こういう特徴をもつも…
今日はシーケンスです。シーケンスとはListみたいなもんです。ただ、Listとは違う特徴を持ってるのでしっかりそこらへんをおさえましょう。 使ってみよう とりあえず使ってみないことにはどんなものかわかりません。シーケンスを生成して値を表示するだけの…
さて、今日はF#のシーケンスあたりでもやろうかと思ってMSDNとにらめっこしてましたが、気が変わったのでF#でWPFでMVVMパターンな凄く小さなアプリケーションを作ってみることにしました。 作るもの 仕様は、以下のような感じです。 テキストボックスが2つ…
早いもので23回目になりました。 今回はアクティブパターンというものを紹介してみようと思います。こいつも使いこなすとなかなか便利そうなので、ちょっと本気だして習得しようと思いました。 さて、アクティブパターンとはなんぞや?ということですが、…
今回は列挙型です。特に多く語ることはないのであっさりといきます。C#とかでいうenumですね。宣言方法はいたってシンプルで以下のように記述します。 type 型名 = | 値1 = intの値 | 値2 = intの値 | 値3 = intの値 ...早速使ってみます。 // 赤 緑 青の列…
さて、次は関数型言語ではループのかわりによく使われるともっぱらの噂?の再帰についてみてみようと思います。まぁ関数型言語じゃなくても再帰は一般的に使われてるけど、でかいデータを相手にしたときにスタックオーバーフロー起こすから気を付けようねっ…
さて、関数型言語には大体ある(と思ってる)パターンマッチについてやってみます。といっても私が経験してる関数型言語はHaskellとF#だけなので、全部の言語にあるかどうかは良く知りません。まぁC#でパターンマッチに該当するものって何?っていうとswitch…
前回のoption型のエントリを書いたら速攻で@bleisさんからTwitterで突っ込みが入りました。 こういう、突っ込みってうれしいものですよね。option型の説明について補足です。 C#などでの参照型が戻り値となるようなメソッドの場合は、シグネチャを見ただけで…
さて、今回は小ネタです。小ネタだけど要所要所でお世話になるオプション型というものを紹介したいと思います。オプション型というのは値がある場合と無い場合があるという状態を表したいときに使います。C#とかでは一般的にnullが使われるような状態で使わ…
さて、一番プログラムを書いててお世話になるリストの時間になりました。リストといえば何回か使ってきましたが、このリストはいくつかプロパティを持ってたりします。 let list = [1..10] printfn "list.Head = %d" list.Head printfn "list.Tail = %A" lis…
F#にもジェネリックあります!今までもさらりと使ってたり使ってなかったりしますが、これはF#のコンパイラが最大限に空気を読んで、ジェネリックに出来そうなところは勝手にしてくれるからです。例えば以下のような関数を書いたとします。 let makeTuple x …
さて、これまでで基本的にOOPチックな考えてF#のプログラムを書くときに必要そうなことは大体おさえてると思われます。ということで、一区切りの寄り道として簡単なWPFアプリケーションを組んでみようと思います。コードの解説はしません。簡単にコード内に…
さて、ついに関数型言語っぽい機能の説明です!!!合成演算子とパイプ演算子について紹介したいと思います。 合成演算子 合成演算子というのは、その名の通り2つの関数をくっつけてしまう演算子です。前方合成演算子>>と後方合成演算子 例えばf1とf2という…
F#のクラスは、インスタンスを生成するときにプロパティの値を任意の値で初期化する機能があったりします。C#でいうオブジェクト初期化子みたいなものですね。 ただ、F#ではオブジェクト初期化子という名前は使われていなくて「初期化時のプロパティへの値の…
そろそろ、過去のエントリのリストが長くなってきたので、後ろにつけることにしました。さて、今日はC#でお馴染みラムダ式とイベントをやってみようと思います。 ラムダ式 ラムダ式の定義は簡単です。 fun 引数 -> 関数本体試しに足し算する関数をラムダ式で…
F#やりたい人に、まじお勧めです。最近書いてるF#のエントリは、この本で得た知識をOOPから入るならどういう風に整理するとわかりやすいかなという自分の考えの整理のために書いてるので、この本見たら私のF#のエントリは見る必要ないです!! F#は、C#と同…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 手軽なスクリプト言語としてのF# その5 手軽なスクリプト言語としてのF# その6 手軽なスクリプト言…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 手軽なスクリプト言語としてのF# その5 手軽なスクリプト言語としてのF# その6 手軽なスクリプト言…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 手軽なスクリプト言語としてのF# その5 手軽なスクリプト言語としてのF# その6 手軽なスクリプト言…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 手軽なスクリプト言語としてのF# その5 手軽なスクリプト言語としてのF# その6 手軽なスクリプト言…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 手軽なスクリプト言語としてのF# その5 さて、今まで型にうるさいF#言語だけど型について一切触れて…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 手軽なスクリプト言語としてのF# その5 手軽なスクリプト言語としてのF# その6 さて、7回目になり…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 手軽なスクリプト言語としてのF# その5 手軽なスクリプト言語としてのF# その6 さて、7回目になり…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 手軽なスクリプト言語としてのF# その4 さて、今回はタプルというものを使ってみようと思います。タプル自体の説明は以下を参照するといいと…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 手軽なスクリプト言語としてのF# その3 さて、今回はちょっと次への布石としてC#とかでいうeventをどうやって定義するかということの元ネタとなるものを使ってみようと思います。そ…
手軽なスクリプト言語としてのF# 手軽なスクリプト言語としてのF# その2 せっかく関数やったので、ちょっと関数型言語っぽいことしてみようと思います。その名もカリー化。 カリー化とは"2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = …
手軽なスクリプト言語としてのF# 前回で、さらっと手続型っぽい言語としてF#を使うための基本的な機能を流してみました。そして、書いた後に気付いたんですよ。まがりなりにも関数型言語のF#の最初の記事で関数の定義の仕方を書いてなかったことにorz という…