静的Duck Typingでプロパティにアクセスする

F#

F#には静的Duck Typingを行うための(非常にマイナーな)(そして難解な)仕組みがありますが、 プロパティ(setter)にアクセスする方法は少し特殊です。 マイナーすぎて多分ググってもほとんどヒットしないと思うので、一応サンプルを載せておきます。 結論から…

全角・半角・ひらがな・カタカナ

アルファベットの大文字/小文字を区別せずに文字列を比較するのはよくあることですが、 全角・半角・ひらがな・カタカナに対応する方法もあるようです。 以前せっかく調べたので忘れないようにメモしておこう。 open System.Globalizationlet contains (valu…

F#とAzure Functions

Azure Functionsがなかなか便利で、すでに仕事で何度か利用しています。 ご紹介も兼ねて簡単なサンプルを載せておきたいと思います。 ここではHTTPリクエストに対して自分自身を送り返すQuine的な関数を作ってみます。 前提知識やメモ run.fsxに処理を記述す…

はじめての Azure "F#" Notebooks

Azure Notebooksを試してみました。*1 Azure Notebooks(Jupyter)は本来、検証や実験の結果を共有したり、試行錯誤の記録を残す目的で使われることが多いのではないかなと思いますが、技術的なドキュメントを対話的に作成する際にも便利そうな予感がビシビシ…

実行制限付きの並列計算

F#

個人的にご質問をいただいたので、簡単なサンプルを書いてみました。 「たくさんの処理を並列に実行したいのだけど、同時に走るスレッド数は制限したい」というプログラムです。 let worker (id: int) = async { System.Console.WriteLine("Worker:{0}", id)…

ワーカープロセスとstatic変数に関してのメモ

asp.net - IIS app pools, worker processes, app domains - Stack Overflowより: In a server you can have many asp.net sites that runs together. Each one site is an app domain. You must assign to each of them one application pool. Many applica…

ASP.NET Web API でファイルをアップロード

Web API経由でファイルをアップロードするサンプルをGitHubにpushしました。 自分用の備忘録も兼ねて。。(たまにやり方を忘れる) https://github.com/Nobuhisa/FsWebApiSample メインとなるファイルは以下の2つ。 サーバ : FileController.fs クライアント :…

DIコンテナ使ってますか

海外のStack Overflowなどを見ていると、 "DI vs (Abstract) Factory Pattern" "DI vs Service Locator Pattern" という類の議論(質問)が多数見受けられる。 ( 例えば: http://stackoverflow.com/questions/557742/dependency-injection-vs-factory-pattern…

F# Quiz : プロパティ

F#

F# Advent Calender 2015の4日目の、ぐるぐるさんの記事を拝見していました。 F#のクラス(の主に定義する部分)についてまとめ - ぐるぐる~ 僕はお仕事で F# + ASP.NET MVC の組み合わせを使うことが多いのですが、やはりC#/V○前提のフレームワークを用いる…

恐怖のおやすみエラー

F#

F# Advent Calender 2015の2日目の記事を拝見していました。 同名の型などを定義することによって、既存の型の使用を制限する方法が紹介されていました。 使いたくない型を見えなくする #FsAdvent - 2つのアンコール ふと、 「そういえば、CompileMessage属…

Singletonパターンの「だらしない」実装

Singletonパターンに限らず、「初回アクセス時に初期化するプロパティ」などは比較的よく実装しますよね。 これを在り来りな方法で書けば、およそ以下のようになることと思います。 type Singleton private () = do printfn "生成されました" static let mut…

誰得ボールZ

F#

F#には、独自サフィックスを定義する機能がある。 今が旬の、誰にも使われない超マイナー機能。 例えば、以下のように定義すると「Z」というサフィックスが有効になる。 どこか懐かしい、胸がパチパチするようなサフィックス。 ちなみに、サフィックスとして…

F#とIDisposable

F#

F#におけるIDisposableの実装方法って、なんだか情報が少ないような気がします。 洋書や海外のサイトなどでは見かけますけどね。日本人F#erはシャイなので仕方ないです。(? ということで、載せてしまおう。 以下のような感じで大丈夫だと思います。多分。 …

不完全なパターンマッチを絶対に許さない!方法

F#

「パターンマッチが不完全な場合に、警告ではなくコンパイルエラーにする方法はあるのですか?」と個人的にご質問を頂いたので、回答のついでにブログにも書いてみることにしました。随分と久しぶりの記事になってしまいました。。 結論から言うと、コンパイ…

ASP.NET IdentityをF#で。

今回もお仕事でASP.NET MVC + F#を使うことになったので*1、ASP.NET Identityを試してみることにしました。 もちろんF#用テンプレートなどは無く、サンプルも皆無。 C#で書かれたサンプルなどを参考に、地道に実装しました。 その際に作ったプログラムをGitH…

露出狂

クラス内の、あるメンバをインテリセンスに載せたくない場合、 EditorBrowsableAttributeを使って隠してやることができます。 F#でも [<EditorBrowsable(EditorBrowsableState.Never)>] member this.Love() = ()なんていう風に使えるものだと思っていました。 でもなぜか、僕の愛が相手に見透かされている</editorbrowsable(editorbrowsablestate.never)>…

F# Advent Calendar 2013 !!!!!!!

F#

placeholder

はてなユーザのためのシンタックスハイライタ

F#

はてなのシンタックスハイライタは多くの言語をサポートしていますが、F#だけは未対応です。 少し前に FSLight というWebサービスが登場したものの、 残念ながらはてなダイアリーとはあまり相性が良くないみたい。 そんなわけで、はてなダイアリー/はてなブ…

HTMLヘルパーを自作してみる

見様見真似でHTMLヘルパーを書いてみました。 F#で書かれた例を見かけなかったので、参考までに投稿しておきます。 ひとつ注意点があります。 F#で定義する際に、型拡張ではなく拡張メソッドとして記述します。*1 System.Runtime.CompilerServices.Extension…

Markdownを処理する

F#

Markdown形式のデータを読み込み、HTMLを出力するサンプルです。 MarkdownSharp と F# Formatting を利用した例をそれぞれ以下に示します。 Markdownの文法は http://blog.2310.net/archives/6 などでご確認ください。 各ライブラリはNuGetからインストール…

F# Formattingでドキュメントを生成してみる

F#

Tomas Petricekさんが開発されている、F# Formatting を試してみました。 GitHub : https://github.com/tpetricek/FSharp.Formatting Documents : http://tpetricek.github.com/FSharp.Formatting/index.html このツールはF# Snippetsでも使われていますので…

Remote F# HACKATHON

2013/03/23(土)に札幌でF#のハッカソンを開催します。 http://atnd.org/events/37221 「興味はあるけど、遠すぎて行けない!」という型は、ぜひリモートでご参加ください。 当日ご自宅で各自ハッスルして頂いて、 気が向いた時に「 #fs_hack 」タグを付けて…

CLR/H ナイトセミナー #2 TypeScript入門

CLR/H ナイトセミナー #2 で使用した えふしゃー・・・じゃなかった。TypeScript入門の資料です。 僕自身あまりTypeScriptを知らないので初歩的な内容になっています。 えふしゃー・・・じゃなかった。TypeScriptに興味のある方はどうぞお使いください。 sli…

F#サンタからの贈り物

F#

F# Advent Calendar 2012の最終日、24日のエントリです。 今年のFsAdventJPはテーマが『実用』ということもあって、面白い記事が多かったですね。 皆さんがハードルを上げまくって下さいましたので、胸焼けが治まりません。 今日はクリスマス・イブというこ…

知っている人は知っている、知らない人は知らない『NDjango』

One ASP.NET Advent Calendar 2012の16日目のエントリです。(ちょっと過ぎちゃった・・・) ASP.NET MVCを勉強しようと思っていた矢先、Advent Calendarの募集が始まったので勢いで参加登録しました。 今は反省しています。 3日前に初めてASP.NET MVCを触りま…

F# 3.0の開発環境を用意しよう!

先日Visual Studio Express 2012がリリースされましたが、F#のための無償アドインも公開されています。 Announcing F# Tools for Visual Studio Express 2012 for Web! | Visual Studio F# Team Blog このアドインをインストールすると、Visual Studio Expre…

IronSchemeは生きている F#の中に

F#

F# Advent Calendar 2011の参加エントリです。 言語指向プログラミング(LOP)をサポートする機能として、 F#にはアクティブパターンやコンピューテーション式と言ったものがあります。 今日は後者のコンピューテーション式を使ってF#にSchemeを組み込んでみた…

オニギリアタタメマスカ・・・

ずいぶん昔のことですが、10/15にCLR/Hの第63回勉強会が開催されました。 Microsoftの荒井さんを講師にお招きし、ちゃっかり実践F#にサインを頂いてしまいました。 僕は今回LTに参加しました。 作っていたツール(ライブラリ?)があったので、それをお披露目…

奇行寄稿しました

F#

ロングゲート社から出版されている禁断の書物、 『プログラミングの魔導書』 ですが、この度Vol.2が出ます。 プログラミングの魔導書 〜Programmers' Grimoire〜 Vol.2 Vol.2のテーマは"プログラミング言語の進化"となっており、さまざまな言語の仕様や近況…

フォースとの決別

F#

May the force be with you... そう言われて育ってはきたけれど(!)、フォースを使わないで済むならそうしたい。 ということで、型関数(Type Function)を使ったミニハックをご紹介。 0 F#!F#! 10"e + 1"で初めて変数eが評価されます。 ただ、型関数は利用で…