F#

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

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

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