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

コンピュテーション式におけるreturnとyield

F#

今日、id:htid46 とF#の話をしつつ帰った時のまとめです。 前提条件 次の2つのエントリを読んでいることが前提です。 詳説コンピュテーション式 - ぐるぐる~ コンピュテーション式の実装にStateを用いる - pocketberserkerの爆走 returnとyieldの変換規則 …

詳説コンピュテーション式

F#

このエントリはコンピュテーション式の仕様を、 日本語で出来る限り分かりやすく解説することを試みたナニカです。 コンピュテーション式自体を使ったことがある人を対象に、その変換の仕組みを説明します。 カスタムオペレータがかかわる部分を省いてあるた…

.NETの標準ライブラリと仲良くする話

F#

F# Advent Calendar 2013の9日目の記事です。 昨日の記事は、id:nenono さんの「F# でリフレクション/式木に触れてみる」でした。 リフレクション、扱いにくいですよねぇ・・・ リフレクションといえば、LangExtシリーズの一つとしてReflectionExtなんてのを…

オーバーロードって素晴らしいですよね!

C# F#

オーバーロード いやぁ、オーバーロードって素晴らしいものですよね。 例えばC#でintを取るメソッドと、stringを取る同じ名前のメソッドを書きたくなったとするじゃないですか。 そんな時でも、C#はメソッドのオーバーロードが出来るので、こう書けるわけで…

ダブル・ディスパッチ~典型的な関数プログラミング・イディオム~

F#

元ネタはダブル・ディスパッチ~典型的なオブジェクト指向プログラミング・イディオム~ です。 これをF#でやってみるとどうなるかやってみましょう。 レンタルショップの例(レベル1) 商品としてCDやDVDを取り扱うレンタルショップを想像・・・するのは面倒…

なごやまつりでF# Type Providerについて(?)話してきた

してきました。 あれだけの人数が集まって、F# 知らない人が全然いないとかすごい勉強会でしたね。 現実(えくせる)と戦う話 from bleis tift Excel方眼紙、どうにかしたいものですね。 今回作った(作りかけ)コードは、GitHubに置いてあります。 ExcelHougans…

.NET基礎勉強会でラムダ計算の発表をしてきた

F#

もう一か月以上も前の話ですが、.NET基礎勉強会で(型無し)ラムダ計算の話をしてきました。 .NETと言えばF#、F#の基礎と言えばラムダ計算!ですよね! 発表資料はこちらです。 ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません) from ble…

Java 8を関数型っぽく使うためのおまじないをF#でやってみた

F#

Java 8を関数型っぽく使うためのおまじない - きしだのはてな Java 8を関数型っぽく使うためのおまじないをC#でやってみた - ぐるぐる~ Java も C# も大変ですね。 F# さんは、ラムダ式も関数型も最初から使えたので、似たようなことはすでにできます。 上…

並列/並行基礎勉強会でasync/awaitをDisってきた

C# F#

async/await不要論 from bleis tift 3/23 に開催された、並列/並行基礎勉強会で「async/await 不要論」という発表をしてきました。 一番言いたかったこと 一番言いたかったことは、実は並列とかとは全く関係ないことです。 それは、言語への機能追加に関する…

高専カンファ in 三重2 行ってきた

F#

高専カンファレンス in 三重2 - 高専カンファレンス Wiki 授業発表ということで、発表もしてきました。 F#によるFunctional Programming入門 from bleis tift 「高専生だし、このくらい飛ばしても大丈夫やろー」と思って飛ばしすぎましたごめんなさい。 想定…

NGK2012B で Excel-DNA 紹介してきた

発表後に新バージョンがリリースされました。 これを機にみなさん使ってみましょう。 VBAを書きたくない話(Excel-DNAの紹介) from bleis tift

第2回 関数型言語勉強会 大阪でしゃべってきてた

F# C#

第2回 関数型言語勉強会 大阪 : ATNDもう一か月以上前じゃないですか・・・ ということで、しゃべってきました。 Better C#の脱却を目指して from bleis tift C# (や Java) を使っているときよりも型の力を借りましょう、ということを主軸に話しました。 C# …

C# から使いやすい F# コードの書き方

F# C#

さて始まりました、F# Advent Calendar 2012 です。 今年は、「実用」がテーマと言うことで、F# で書いたコードを C# から使いたくなった時に気を付けるべきポイントなどをまとめました。 F# と C# で異なる名前を付ける F# では、module に定義する関数や変…

わかめのモナ化で色々やってきた

わかめのモナド浸し - connpassハンズオンの前座として、Maybe モナドと State モナドの解説をしました。 モナドハンズオン前座 from bleis tift 発表も資料も割と好評なようで、「モナドの教え方」みたいなものの感覚もつかめたので発表してよかったです。 …

null の扱い

Maybe つながりで、色んな言語の null の扱いについてちょっとだけまとめてみた。 観点は一つ、「this が null の場合に this の指す先にアクセスしないメソッドが呼び出せるか」です。 C++ #include <iostream> struct hoge { void f() { if (this == 0) std::cout <<</iostream>…

Coderetret in Nagoya に行ってきた

4月28日 Coderetreat in Nagoya(愛知県)行ってきました。 使った言語は、 F# Ruby SML# の 3 つです。 ほとんど F# の布教に行ったような感じになりました。 F# というか関数型言語自体初めての人ばかりでしたが、びっくりするぐらい評判良かったです。 ただ…

@IT で、「F#で初めての関数型プログラミング」という記事を書きました

F#

特集:C#開発者のためのF#入門(前編) F#で初めての関数型プログラミング前編ということで、後編もあります。 後編は大体一か月後に公開予定です。 主な対象は特集のタイトルにもありますが、C# プログラマです。 でもまぁ、サンプルコードは極力シンプルに…

Microsoft MVP for Visual F# 受賞

F#

F#! F#!

FsYaml1.0 リリース

F#

型を使ってカスタマイズする F# 用の YAML ライブラリを作りました。 マニュアル? ソースコード 別プロジェクトの設定ファイル読み込み用として作っていたんですが、ライブラリとして独立させた方が便利だと思ったので分離しました。 そういう背景があるの…

Quick Test Switcher 1.1 をリリースした

テストコードと実装コードの切り替えを支援する Visual Studio 用のアドインを作りました。 マニュアル的なもの Visual Studio Gallery のページ ソースコード コードを開いた状態で Ctrl-0 を押すと、対応するファイルがある場合にそれを開きます。 頻繁に…