F#

F#に型クラスを入れる実装の話

F#

この記事はF# Advent Calendar 2016の11日目のものです。ちょっと遅れてしまいました。。。 ICFP 2016(と併催されたML workshop?)で気になる内容があったので、ちょっとまとめてみました。 Classes for the Masses - ICFP 2016 ざっくり、F#に型クラスを導入…

続・そろそろPower Assertについてひとこと言っておくか

3年前にこんな記事をあげました。 bleis-tift.hatenablog.com 3行でまとめると、 Power Assertはユニットテストのためにほしかったものではない 欲しいのは結果の差分 誰か作って! というエントリでした。 そしたら id:pocketberserker が作ってくれました…

F#でWPFやるときのTipsとか(その2)

F#でWPFやるときのTipsとか(その1)の続編です。 添付プロパティの作り方 F#で添付プロパティを作るには、添付プロパティの本体はプロパティではなくフィールドに保持する必要があるようです。 // ダメな例 type Sample private () = static member SomeValue…

F#でWPFやるときのTipsとか(その1)

最近、Full F#でWPFしてるので、Tipsてきなものをまとめようと思います。 その2はTipsがたまればあるかもしれませんが、過度な期待はしないでください。 プロジェクトの作り方 基本的には、Pure F# WPF GUIアプリ開発に向けてに書いてある通りです。 細かい…

Optionに見るコンピュテーション式のつくり方

F#

またの名を入門コンピュテーション式(嘘 この記事は、「コンピュテーション式ってどうやって作ればいいの?」に対する自分なりの回答です。 matchのネスト optionを返す3つの関数f, g, hがあったとします。 で、このような処理がしたいとしましょう。 let ni…

Combine Deep Dives

F#

この記事はF# Advent Calendar 2015の17日目の記事です。 今日はコンピュテーション式の Combine について取り上げます。 詳説コンピュテーション式をある程度理解していると分かりやすいかもしれません。 内容を簡単にまとめると、 Delay の中で受け取った…

あなたの知らないF#についての7つの事柄

F#

この記事はF# Advent Calendar 2015の13日目の記事です。 タイトルは釣りで、今回はMicrosoft/visualfsharpリポジトリをウォッチしている中で見つけた個人的に面白かったIssueを取り上げます。 名前空間内でのprivateの意味 現状のF#では、名前空間内でpriva…

F#のクラス(の主に定義する部分)についてまとめ

F#

この記事はF# Advent Calendar 2015の5日目の記事です。 4日目は@n_enotの「F# でTDDした話 前編?」でした。 ※業務連絡。F# Advent Calendar 2015の参加者の皆さん、今年は登録順ではなく、申請順になってしまっているようなので、イベントページに登録はし…

ChalkTalk CLR – 動的コード生成技術(式木・IL等)に行ってきた

centerclr.doorkeeper.jp 直前で定員を増やしてもらえたので、参加できました。 会自体について 内容は主にILの話と式木の話で、ディスカッションというよりは講義に近い感じでした。 個人的にはディスカッション寄りの会を期待していたのですが、知識レベル…

シャドーイングとイミュータブルプログラミング

C# F#

シャドーイングのない言語と、イミュータブル中心のプログラミング(以下イミュータブルプログラミング)の相性って悪いのでは?と思ったのでブログに残しておきます。 シャドーイングとは 既存の変数と同名の変数を定義して、そのスコープで既存の変数にアク…

再帰関数のスタックオーバーフローを倒す話 その3

F#

再帰関数のスタックオーバーフローを倒す話 その2の続きで、最後です。 前回はCPS変換じゃスタックオーバーフローが回避できない場合もあるよという話でした。 前提知識は、F#と、スタックについてです。 これまではCPSの話を中心にしてきましたが、この記事…

再帰関数のスタックオーバーフローを倒す話 その2.5

F#

再帰関数のスタックオーバーフローを倒す話 その1ではCPS変換について、 再帰関数のスタックオーバーフローを倒す話 その1.5では末尾呼び出しについて、 再帰関数のスタックオーバーフローを倒す話 その2では2種類の末尾呼び出しの最適化について話しました…

ProjectScaffoldを使ってみた

F#

最近公開したF#の式木の実行器であるFSharp.Quotations.Compilerですが、 これを作るためにProjectScaffoldを使ってみたのでその知見の共有です。 ProjectScaffoldとは ProjectScaffoldは、F#のプロジェクトを作る際の「足場」を用意してくれるツールです。 …

再帰関数のスタックオーバーフローを倒す話 その2

F# IL

再帰関数のスタックオーバーフローを倒す話 その1の続きです。 前回はCPS変換することでスタックオーバーフローが回避できるよやったー!という話でした。 今回は、CPS変換じゃスタックオーバーフロー回避できない場合もあるよ、という話をします*1。 前提知…

再帰関数のスタックオーバーフローを倒す話 その1.5

F# IL

再帰関数のスタックオーバーフローを倒す話 その1 - ぐるぐる~bleis-tift.hatenablog.com 再帰関数のスタックオーバーフローを倒す話 その1では、CPS変換によって再帰関数のスタックオーバーフローを回避する方法を紹介しました。 その中で、「末尾呼び出し…

再帰関数のスタックオーバーフローを倒す話 その1

F#

再帰関数のスタックオーバーフローを倒す話を何回かに分けてします。 継続渡しスタイルもしくは継続渡し形式(Continuation Passing Style、以降CPS)という言葉を聞いたことがあるでしょうか。 今日はCPSの話をします。 前提知識は、F#のみです。 継続とは CP…

2つのOptionalで分岐する

僕のOptional<>の使い方がカッコワルイ。 - 谷本 心 in せろ部屋にある最後の例ですが、 2つのOptionalの組み合わせによって処理を分岐させるコードが幾つか載っています。 ifで書いた例を見てみましょう。 public String hello(Optional<String> name1, Optional<String> na</string></string>…

Effective Visual F# Power Tools

F#

さてさて、またもや他人のAdvent Calendarに乗っかったネタです。 今日は、Visual F# Power Tools の紹介というF# Advent Calendar 2014の11日目の記事です。 VFPTの基本的な便利な機能は元記事を参照いただくとして、このエントリでは更に進んだ使い方等を…

コンピュテーション式の変形後を覗き見るを改良する

F#

さてさて、気になるネタがまた増えたようです。 コンピュテーション式の変形後を覗き見るというエントリがF# Advent Calendar 2014の10日目の記事として公開されました。 Quoteを差し込んで、Runで表示する、というのは面白いアイディアですね。 だが俺の前…

クラスのコンストラクタ呼び出し時にプロパティも同時に初期化する

F#

これはF# Advent Calendar 2014の9日目の記事(ピンチヒッター)です。 昨日の記事はねのさんによるFSharperならこう書く(A Poker Game Program) #FsAdventでした。 この記事を勝手に添削したエントリも、よろしければ合わせてどうぞ。 何度も言いますが、コー…

Re: FSharperならこう書く(A Poker Game Program) #FsAdvent

F#

FSharperならこう書く(A Poker Game Program) #FsAdventというエントリがF# Advent Calendar 2014の8日目の記事として公開されました。 この記事自体は、主に設計よりな話をしていますが、ここでは実装寄りの話を中心に、 勝手に添削してみました。 また、記…

NGK2014Bで発表してきた

札束でExcelを殴る from bleis tift NGK2014Bで、FCellという製品紹介の発表をしてきました。 詳細は、発表資料よりもその中で紹介しているデモを参考にしてください*1。 FCellと類似した(?)ものとしては以下のようなものがあります。 COM NPOIやEPPlus等 Ex…

実例に見るSource変換活用術

F#

これはF# Advent Calendar 2014の5日目の記事です。 さて、コンピュテーション式おじさんです、こんにちは。 最近は[Persimmon](https://github.com/persimmon-projects/Persimmon)というF#用のテスティングフレームワークを作っています。 Persimmon自体は…

なごやかJavaで発表してきた

.NET系開発者から見たJava from bleis tift なごやかJava第一回で、「.NET系開発者から見たJava」というタイトルで発表してきました。 Javaのこの機能って.NET開発者から見てどうなの?というような内容です。 大阪から参加してくれた方の感想を載せておきま…

VS Pro相当が無償化されたことだし、F#をやろう!

F#

Pro相当のVisual Studioが無償になった! とのことらしいですよ! F#*1も入っており、拡張機能も使えるようです。 ということは、素敵拡張機能であるVFPTが使えるということですよ! もし今回のことでF#を始めるという方は、是非VFPTを導入した環境でF#を触…

函数型なんたらの集い 2014 in Tokyo

F#

函数型なんたらの集い 2014 in Tokyoに参加してきました。 発表資料はこちら。 SI屋のためのF# ~DSL編~ from bleis tift 内容は、Excel方眼紙を倒すためにDSLで頑張ったというものです。 この中で紹介しているTableDslは、いろいろと発展を考えているので…

F# Meetup in Tokyo

F#

今更シリーズその2。8月3日に、F# Meetup in Tokyoに参加してきました。 発表資料はこちら。 F#事例発表 from bleis tift 内容は、業務でF#を使った事例の紹介です。 F#オンリーのイベントにたくさんの人が参加してくれて、またいろいろな話が聞けてよかった…

クラウド温泉4.0@小樽 - The Return of F#

F#

今更シリーズその1。 7月の25から28日に、 クラウド温泉4.0@小樽 - The Return of F#に参加するために北海道に行ってきました。 発表資料はこちら。 yieldとreturnの話 from bleis tift 内容はコンピュテーション式のyieldとreturnについての話で、 詳説コ…

TypeProviderについて、勝手に補足

F#

昨日行われたF# Meetup in TokyoのPart 1で@kos59125さんがTypeProviderに関する素晴らしい発表をしてくれました。 今日の発表資料アップロードしました。 commpass からもアクセス可能です。 http://t.co/XrdiVppTpM #fsugjp— kos59125 (@kos59125) 2014, 8…

値制限

F#

なんかTLで偶然そんな話題があったので。 コードはF#です。 まずrefについて 値制限の話題に行く前に、refについて説明します。 refは、「変更可能な値」を実現するために使える型で、大体こんな感じに実装されています。 type 'a ref = { mutable contents:…