F#

F# ではLiteral属性がついている束縛はpublic constなフィールドになる

F#

F# の内部表現的な話。 前にどこかで人に尋ねられたことがあったので備忘として。 [<Literal>] let foo = 1 こんなコードを書くと [Literal] public const int foo = 1; こういうコードとだいたい同じILになるよ(実際には他にもコンパイルが勝手に付与する属性がある</literal>…

Persimmonをdotnet testコマンドで実行するためのTestAdapter試作

https://www.nuget.org/packages/Persimmon.TestAdapter/ まだメジャーリリースには至っていないのですが、ひとまず動いたのでnugetにあげておきました。 これでようやくdotnet testコマンドでテストができるようになったわけです。 kekyoさんが途中まで作成…

Persimmonのアサーション強化策たたき台

F#

私が関わっているPersimmonというF#向けテスティングフレームワークはアサーションがとても貧弱です。 どのくらい貧弱かというとassertEquals、assertNotEquals、pass、fail、assertPred、ignoreResultしかない状況です。 これは(後付けですが)Coreは最小…

Persimmon 2.0.1とPersimmon.MuscleAssert 1.0.0をリリースしました

表題の通りですが、他にもDiff.Match.Patch 2.0.1とFSharp.Object.Diff 1.0.0もリリースしています。 NuGet Gallery | Persimmon 2.0.1 NuGet Gallery | FSharp.Object.Diff 1.0.0 NuGet Gallery | Diff.Match.Patch 2.0.1 NuGet Gallery | Persimmon.Muscle…

MessagePack-CSharp用の F# 拡張ライブラリを作った

F#

MessagePack-CSharpがリリースされた話を読んですっごーいと感心していたら F#拡張は @pocketberserker さんが作ってくれるでしょう(チラッ— neuecc (@neuecc) 2017年3月13日 という通知が飛んできたので即興で作りました。 https://github.com/pocketberserker…

判別共用体のUnionCaseにAttributeを付与する

F#

必要に迫られたので調べた。 open System // AttributeTargets.Property以外はエラー [<AttributeUsage(AttributeTargets.Property, Inherited = false); Sealed>] type TestAttribute() = inherit Attribute() // fieldがない場合: // AクラスのB getプロパティにつく type A = | [<Test>] B // fieldがない場合: // CクラスのNewDメソッ</test></attributeusage(attributetargets.property,>…

F# の型拡張を使って定義したメソッドを C# から呼び出す

F# C#

Donさんに教えてもらいました。 リフレクションを使って呼び出すだけなのでC#限定というわけではないです。 using System.Reflection; using Microsoft.FSharp.Reflection; ~ 略 ~ typeof(FSharpReflectionExtensions).GetTypeInfo() .GetMethod("FSharpTy…

ZeroFormatter.FSharpExtensionsのF# 4.1対応

F#

FSharp.Core 4.1.0がNuGetにpublishされていたので、ZeroFormatter.FSharpExtensionsでF# 4.1の型を扱えるようにしました。 ついでにプロジェクト構成を.NET Core SDK RC4のものに全面修正しています。 NuGet Gallery | ZeroFormatter.FSharpExtensions 0.3.…

F# のJSON事情

F#

現時点でF#のJSON事情をぱっと思い出せなかったので、知っている範囲でメモしておくことにします。 あらかじめ断っておくと、私見にまみれているかつ抜けているライブラリがあるかもしれません。 DataContractJsonSerializer 標準にあるやつ。 当然ながらF#…

F# の型をZeroFormatterで扱うための拡張ライブラリを作った

F#

本日もZeroFormatterネタです。 年始の記事で 欲しい人がそのうち作るでしょう などと書いていたら見事にブーメランでした。 欲しくなったというよりはF#erとしての意地(謎)という感じですが。 本家ライブラリだけでどこまで書けるのか? primitiveな型や…

Persimmonの.NET Core対応

F#

これはF# Advent Calendar 18日目の記事です。 そして.NET Core Advent Calendar 18日目の記事でもあります。 盛大に遅刻しました。 qiita.com qiita.com 今回はPersimmonという、私が開発にかかわっているF#向けテスティングフレームワークの話をします。 …

コンピュテーション式の展開結果を可視化するツールComVuを作った

F#

この記事はの13日目です。 qiita.com 今回は過去に作ったComVuというツールの話をします。 https://github.com/pocketberserker/ComVu nugetでダウンロードできます。 これはなに ComVuはコンピュテーション式を機械的に展開し、結果を表示するライブラリと…

2016年時点でF# 用のライブラリを.NET Core対応させるのは時期尚早だった?

F#

この記事はF# Advent Calendar 2016の12日目の記事です。 また、.NET Core Advent Calendar 2016のの12日目の記事でもあります。 結論 先に個人的な結論を述べておきます。 .NET Core対応のfsprojを待とう マイグレーションツール無しでマイグレーションする…

F# 4.1から一部のキーワードがunreserveされる話

F#

この記事はF# Advent Calendar 2016の9日目の穴埋め用記事です。 qiita.com 本日はキーワードの話です。 https://github.com/fsharp/fslang-design/blob/8ee13305a7ac559a4c0396681e9501120bbb567e/FSharp-4.1/FS-1016-unreserve-keywords.md 幾つかのキーワ…

F# 4.1からCallerLineNumber, CallerFileName, CallerMemberNameが機能するようになる話

F#

この記事はF# Advent Calendar 2016の7日目の穴埋め用記事です。 qiita.com 今回は標題にあげたCallerLineNumber, CallerFileName, CallerMemberNameの話。 https://github.com/fsharp/fslang-design/blob/8ee13305a7ac559a4c0396681e9501120bbb567e/FSharp-…

F# 4.1のResult型

F#

この記事はF# Advent Calendar 2016の6日目のものです。 穴埋め用記事です。 qiita.com 今回はF# 4.1から標準となるResult typeの話です。 https://github.com/fsharp/fslang-design/blob/8ee13305a7ac559a4c0396681e9501120bbb567e/FSharp-4.1/FS-1004-resu…

FSharp.Control.ImperativeAsyncの紹介

F#

この記事はF# Advent Calendar 2016の8日目のものです。 大遅刻しました…orz qiita.com 今回はFsharp Bootcamp Tokyo 2016 with Tomas Petricekで議論した結果生まれたライブラリの紹介です。 https://github.com/pocketberserker/FSharp.Control.Imperative…

.NET Core用のテストランナーを作る

C# F#

[2017/02/18追記].NET Core SDK RC以降で実装方法が変わったのでこの記事を読むべきではありません これは.NET Core Advent Calendar 4日目の記事です。 qiita.com .NET Coreに対応したユニットテスト さて、世の中にはすでに.NET Coreに対応済みのテスティ…

最小のコンピュテーション式

F#

メモ。 使う規則 T(e;, V, C, q) = C(e;b.Zero()) この規則がvalidなコンピュテーション式を作れるはず。 Zeroメソッドのみを用意すれば良いのでBuilderの実装も最小限なはず?*1 コード // 定義 type A() = member x.Zero()=() let a = A() // 実際に試す a…

.NET Fringe Japan 2016の個人的な振り返り

dotnetfringe-japan.connpass.com 運営及び発表者として参加しました。 運営といっても、勉強会運営に慣れている方が多かったのでやること・やらないことが初期から明確だった気がします。 当日の懇親会周りの運営を手伝えなかったのは申し訳なく思いつつ………

TypeProviderでFizzBuzzを取得可能な自然数型を生成する

F#

コンパイル時に生成できますね、というだけの話です。 準備: FSharp.TypeProviders.StarterPackのインストール NuGetからインストールしてください。 注意点としては、ファイルの定義順序がそのままだとコンパイルできない可能性があることでしょうか。 Prov…

Twitterで流れてきたListReaderコンピュテーション式の解説

F#

先日、Twitterで id:n7shi さんが面白いコードを投下していた。 コンピュテーション式のビルダーは1回しか書いたことがないので、簡単なものでも苦戦した。用途を限定してリストを順に読む例(モナドではない)。 https://t.co/Zfq0M9vm0n— 七誌 (@7shi) Jun…

F# API検索サービス"FSDN"を作りました

F#

公開から少し間が空きましたが、改めて周知ということで。 http://fsdn.azurewebsites.net/ このサービスは現在Azureで運用しています。 運用にあたり、株式会社オンザロード様にスポンサーについていただきました。 私がメンテナンスしていく限りはUNIX、Li…

Persimmon用アサーションライブラリMuscleAssertを作った

F#

正確には「作っていたライブラリをPersimmon.MuscleAssertにrenameした」です。 注意 この記事はあくまで私の考えでありpersimmon-projectsの総意であるわけではありません。 前提 PersimmonはF#用のテスティングフレームワークです https://github.com/pers…

diff-match-patchを F# に移植してみた

世の中にはdiff-match-patchと呼ばれる、Google製の便利な文字列diffライブラリが存在します。 そんなdiff-match-patchですが、C#版はコードは存在するもののnugetにpublishされていません。 また、コードは.NET Framework 3.5以上である必要があるため、諸…

java-object-diff を F# に移植

久しぶりの移植芸です。 移植理由 Persimmonの開発に必要みたいな話になり、かつ移植する時間のありそうな人間が他にいなかったとかそういう。 先達 https://github.com/SQiShER/java-object-diff さすがJavaさん、探せばだいたいでてくる。 成果物 https://…

継続を利用してAsyncコンピュテーション式を実装できるか試す

F#

Combine Deep Dives - ぐるぐる~ という記事にこういう文章があります。 このあたりを解決するために、Stateを使ったり継続を使ったりできるかもしれませんが、Async では未検証です。 そういえば検証したことはなかったなと思ったので、試してみました。 …

PaketとFAKEを使うようにした理由とか

F#

おはようございます。 たぶんこの時間帯は寝ているので、この記事はきっと予約投稿(どうでもいい)。 ここ数日、重い腰をあげて開発したりメンテしたりしているF#系ライブラリの一部でPaketとFAKEを使うようにしたり、最近の書き方に合わせた。 今回対象に…

最近使っている F# のライブラリやツール

F#

下記のF#版です。 最近使っているScalaのライブラリ - pocketberserkerの爆走 ここ1年くらいのものを対象にしています。 といってもそんなに数はない…。 ライブラリ 自分が開発に関わっているものは除外しています。 FSharp.Data https://github.com/fsharp/…

FAKEとgitbookとAppVeyorを組み合わせて、自動でビルドして生成したhtmlをgh-pagesブランチにcommitとpush

F#

あけましておめでとうございます。 年末年始の息抜きでやってたものをまとめておきます。 gitbookとtutとtravis-ciを組み合わせて、自動でビルドして生成したhtmlをgh-pagesブランチにcommitとpush - scalaとか・・・ これを F# でやろうという話です。 FAKE…

お前もnullにしてやろうか! #FsAdvent

F#

この記事はF# Advent Calendar 2015の31日目の記事です。 ガス欠なので役に立たないネタでお茶を濁します。 Noneはnullと解釈できる F#erの皆様はたいていprintf "%A" Noneを実行して<null>と表示されることに落胆したことがあるのではないでしょうか。 私は落胆し</null>…

GitBookを出力するためのFAKE拡張の試作品を作った #FsAdvent

F#

この記事はF# Advent Calendar 2015の30日目の記事です。 最近はやりのあの子 最近GitBookが流行っぽいですね。 GitbookIO/gitbook · GitHub そんでもって、Scala界隈では下記リポジトリのようにtut + GitBookでいい感じにコンパイルチェックもできるような…

fsugjp/publicというGitter roomについて #FsAdvent

F#

この記事はF# Advent Calendar 2015の28日目の記事です。 gitter.im 本日はfsugjp/publicというGitter roomについて書きます。 前にも書いたけど、もうちょっと詳しく。 どういう場所なのか roomの説明部分には下記のように書かれています。 F#関連について…

F# 4.0で入った地味だけど嬉しい機能紹介 #FsAdvent

F#

この記事はF# Advent Calendar 2015の26日目の記事です。 通常のアドベントカレンダーは25日までですが、F# 界隈では英語版が31日まで続けているのにあわせて31日くらいまでやるっぽいです。 4.0の変更一覧 下記のページを見るのがてっとり早いです。 F# 4.0…

TypeProviderでコンピュテーション式用の型を生成してみた #FsAdvent

F#

この記事はF# Advent Calendar 2015の25日目の記事です。 TypeProviderを使う 今までチュートリアルくらいしかTypeProviderは作ったことはなかったのですが、ようやく重い腰をあげて使うことにしました。 型プロバイダー(TypeProvider)のちょっとしたアレコ…

"ValueWithName"や"Auto-Quotation of Arguments at Method Calls"を使って変数名や関数名を取得する #FsAdvent

F#

この記事はF# Advent Calendar 2015の一日目の記事です。 Expr.ValueWithNameの話 以下のようなコードがあるとします。 let f a = <@ a @> let hoge = "Hi!" f hoge これはどう表示されるでしょうか? F# 3系までは以下のとおり(VS2013のF# interactiveで確…

Elm の automaton を F# に移植した

F#

おはようございます、ライブラリ移植するマンです。 つい先日、関数型ストリーム処理勉強会 - connpassという勉強会がありましたねというタイミングで、ElmのFRPライブラリが情報網にひっかかったので移植しました。 https://github.com/evancz/automaton au…

Persimmonはユニットテストを分散実行する夢をみるか?

F#

みるかもしれない。 どういうこと? かいつまんで問題を説明すると PersimmonというF#用テスティングフレームワークが存在する PersimmonでもRRRSpecやtest_queueみたいに分散実行したいね? Persimmonでのテスト実行の入力はdll アセンブリロードして アセ…

#fsharp 用テスティングフレームワーク Persimmon 1.0.0 をリリースしました

F#

https://github.com/persimmon-projects/Persimmon/releases/tag/1.0.0 https://github.com/persimmon-projects/Persimmon.Dried/releases/tag/1.0.0 https://github.com/persimmon-projects/FAKE.Persimmon/releases/tag/1.0.0 Testing Framework Meetingで…

テストという存在の型について考えてみる

いわゆるユニットテストフレームワークに現れる各種型について考えてみる。 成果は考えない。 このエントリは考えがまとまっていない段階で書かれたものであるため、間違っている可能性があります。 成果物(の途中経過) 途中結果を素っ飛ばした作成中のもの…

「Persimmonでテストを書く」での疑問点に回答してみる

F#

Persimmon でテストを書く — a wandering wolf 上記記事で2点ほどあがっていたものがあるので。 Usingがない 検証さぼってただけです、すみません。pull requestだしたのでそのうち入るかもしれません。 enable use keyword by pocketberserker · Pull Reque…

Functional Java の HList を C# に移植して F# 拡張を作った

前々からFunctional JavaにHListが存在するのは知っていたのですが、なかなか手をだせていませんでした。 で、最近Lensライブラリ移植の息抜きにちょっと時間があったので移植してみました。 そもそもHListって? heterogenous list。 日本語ではたまにヘテ…

F# User Goup Japan用のgitter roomができました

F#

タイトルの通りです。 fsugjp/public - Gitter yukitosさん++ 何する場所? F#についてゆるふわ喋る場所です。 以前から scalajp/public - Gitter みたいなのがF#にもあるといいなぁ、と思っていたので、嬉しい限りです。 どう書けばいいのか こういうライブ…

Quoteメソッドでコンピュテーション式に介入する(実践編?)

F#

全国コンピュテーション式ユーザの皆様こんにちは。 GWの進捗どうですか? 私は駄目です。 ネプテューヌVⅡを1周しようと思っていたのにまだできていません…。 さて、今回はQuoteメソッドを使ってコンピュテーション式への介入しようという話の実践編(?)です…

scalacheckのcommandsパッケージをPersimmon.Driedに移植

F#

ちったーを眺めていたら 気がついたら ScalaCheck の状態付きテストができるバージョンが出てた。 URL Erlang 版 QuickCheck をマネしたんだとか。 URL #scalajp2015-02-04 13:30:06 via Twitter Web Client というつぶやきが見え、そういえば干し柿にはまだ…

CoArbitraryの実装比較

全国 QuickCheck 系ユーザの皆様こんにちは、もみあげです。 今日は CoArbitraryとScalacheck - scalaとか・・・ に関連して、各言語の QuickCheck 実装の CoArbitrary や Arbitrary (a -> b) インスタンスについてみていきましょう。 CoArbitrary とは Quci…

Persimmon用のランダムテストライブラリ案(もしくは scalacheck の F# 移植)

あけましておめでとうございます。 さっそくですが進捗どうですか? 私は駄目でした(Persimmon用VS Test Explorer拡張的な意味で)。 今回はランダムテスト実装の話です。 Persimmon と FsCheck の相性について FsCheck には IRunner という、拡張ポイントが…

F# 製ユニットテスティングフレームワーク Persimmon について #FsAdvent

F#

この記事は F# Advent Calendar 2014 の27日目の記事です。 内容は今年の10月末あたりから作っている Persimmon というフレームワークについてです。 諸注意 本記事に書くことはあくまでpocketberserker個人の見解です。 他の開発者がどう考えているのかは …

FsCheckのこまごまとしたこと #FsAdvent

F#

全国のF#erの皆様こんにちは、もみあげことなかやんぺんぎんです。 ここからは F# Advent Calendar 2014の延長戦(25日目)です。 英語圏と張り合ってるわけじゃ、ないんだからね!? 今回は今年めでたく正式版がリリースされた FsCheck についてちょっとした…

FsAttoparsecについて

F#

この記事は F# Advent Calendar 2014の16日目の記事兼ML Advent Calendar 2014の16日目の記事になります。 今日はF# のネタリストの中から、FsAttoparsecについてです。 attoparsec とは attoparsec は Haskell のパーサコンビネータライブラリの一つです。 …