読者です 読者をやめる 読者になる 読者になる

Equality 制約

F#

github.com の実装のためのメモ(宣伝)。 型制約は F# における型安全をマスターするためには必須の知識であるため、細かい仕様も見落としてはならない。 型制約は F# 言語仕様書 4.0 の 5.2 Type Constraints に記述されている。 Equality制約 Equality制…

使いたくない型を見えなくする #FsAdvent

F#

この記事はF# Advent Calendar 2015 - connpassの2日目です。 同僚へのイタズラネタを紹介したいと思います。 AutoOpenと組み合わせて混乱に陥れてやりましょう。 標準ライブラリの中には、古くなったり、挙動が紛らわしいという理由で使うべきではないクラ…

モジュールのアクセシビリティ管理を手抜きする

F#

F# には、モジュール内の要素(型、関数)のアクセシビリティを指定するには、2つの方法があります。 シグネチャファイルを使う 非公開要素毎に internal / private を指定する シグネチャファイルは、型名のみ公開しメンバは隠すなど、柔軟にアクセシビリ…

実行時にCompiledNameが付いた型の元の名前を取得する

F#

正確には実行時じゃないけど解決したのでメモ 元ネタ: http://ja.stackoverflow.com/questions/6177/compilednameが付いた型のf-での名前を取得したい 問題 F#では、CompiledNameAttributeを付けた型は、リフレクションで元の名前を取得できません。 [<CompiledName("Piyo")>] type</compiledname("piyo")>…

F# Puzzle 2

F#

問題 次のコードは何が出力されるでしょうか? let toUpper (x: string) -> x.ToUpper() if true then "hoge" else "piyo" |> toUpper

F# Puzzle

F#

問題 次のコードで何が出力されるでしょうか? 軽量構文を使ってます! [ for x in [ 1; 2; ] do for y in [ 10; 20; ] do yield x + y for z in [ 100; 200; ] do yield z ]

文字列比較の罠

F#

突然のF# Advent Calendar 2014 - connpassの24日目です。 F# のdisりネタを紹介したいと思います! こんなふざけた挙動のくせに調子乗らないで下さい! 文字列比較の挙動 F# の文字列比較には2種類の方法があります。演算子(<, <=, >, >=)を使う方法とCompa…

AutoOpenAttributeについて

F#

F# Advent Calendar 2014 - connpassの2日目です。 今回は、AutoOpenを紹介します。 AutoOpenとは、モジュールを自動でopenする仕組みです。主に言語やフレームワークでよく使うモジュールを提供するときに使います。主にライブラリ開発者に対する機能で、利…

F# のネタリスト

F#

知りたいこといっぱいあるので詳しい教えて下さい! F#に便利なVSアドインまとめとか読みたいです 判別共用体の名前付きフィールドについて知りたいです F#3.1のprintfのパフォーマンスについて知りたいです C#で定義されたクラスをF#から扱う時のtipsについ…

F# のデバッグ方法 #fsharp

F#

F#のデバッグには、Visual Studioによる制限と、F#特有の、二種類の辛さが(C#に比べて)あります。本記事では、Visual Studio上での制限や、F#特有のデバッグ方法を紹介します。 また、Visual Studioしか知らないので、他の環境のデバッグについては、得意…

Visual F# Power Tools の紹介

F#

F# Meetup in Tokyo Part 1 - connpassの発表ではスライドを使わなかったので、紹介したサイトのURLをメモしようと思います。 Visual F# Power Tools Visual F# Power Toolsとは、Visual Studioの貧弱なF# エディタに機能を追加してくれるツールです。Visual…

ライブラリ開発者のためのObsoleteAttribute

F#

F# Advent Calendar 2013の10日目です。 ライブラリを開発していると、どうしても古くなり使って欲しくないAPIが出てくると思います。古いAPIは思い切って削除しても良いのですが、互換性を考えてしばらくの間、残しておくのがライブラリ利用者にとって親切…

恐ろしい standalone オプション

F#

この記事は、F# Advent Calendar 2012 14日目の記事です。3ヶ月前の話しをします。僕はF#を使ってプロダクトに対するテストツールを作っていました。Webアプリケーションに対してリクエストを投げ、レスポンスやDBをチェックし、期待通りの動作をしているか…

FParsecで遊ぶ

F#

この記事は、F# Advent Calendar 2011 6日目の記事です。構文解析に使うライブラリはたくさんありますが、今回はFParsecを取り上げます。 FParsec は Haskell の Parsec というパーサコンビネータの F# 実装です。 僕の考える文法 F#を使っていて、「F#の文…