Utf8Json.FSharpExtensions 0.1.0を試験的にリリース

F#

ある朝、目が覚めたらUtf8Jsonのリリース話とともにメンションが飛んできていました。 例によってF#対応は @pocketberserker さんに投げ(— neuecc (@neuecc) 2017年9月27日 ほげぇ、と言いつつ簡単な部分だけ作ったので公開しておきます。 NuGet Gallery | …

vstestで.NET Coreプロジェクトのコードカバレッジをとる

temporary workaroundらしきものがドキュメントにのっていたのでメモ。 https://github.com/Microsoft/vstest-docs/blob/3c64cbc1a387d6f7f9ebc82a953246322d94cd5c/docs/analyze.md#working-with-code-coverage こっちのissueが解決されれば、dotnet testコ…

F# で使われるユニットテスティングフレームワークなどの紹介

F#

前にもかいたことがある気がするけれど、2017年度版ということでどうか。 "フレームワーク"と書きつつライブラリも混ぜます。 NUnit http://nunit.org/ よくみかけるやつその1 古の時代から存在するとされている 最近になってウェブサイトがモダンに 地味に…

Persimmon.Script 2.0.0をリリースした

F#

NuGet Gallery | Persimmon.Script 2.0.0 Persimmon v2を作る過程で「使う人いないし消そう」となってdropしたのですが、最近になってほしいという人が現れたので、v2ようにマイグレーションするくらいなら労力かからないだろうということで復活させました。…

呪文詠唱!F# #ML_study

ML勉強会 #2 - connpass 発表してきました。 要約 F#のコンピュテーション式を使うと呪文詠唱できます。 呪文詠唱自体に実用性はありませんが、やっていることは応用が効くかもしれません。 はじめに 突然ですが問題です。 詠唱 { モナドは 単なる 自己関手…

Microsoft MVP for Visual Studio and Development Technologies(F#)を再受賞しました

そういえばMicrosoft MVP再受賞していました。Visual Studio and Development Technologiesです。— ナゲット・もみあげ (@pocketberserker) 2017年7月3日 Twitterに先んじて投稿していましたが一応こちらでも。 昨年に引き続きVisual Studio and Development…

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…

scala-zero-formatterのパフォーマンス改善やakka-httpサポートとか

https://github.com/pocketberserker/scala-zero-formatter/releases/tag/v0.7.0 表題の件以外にもlz4とzstdへの変換をサポートしてみたりしました。 この2つはあくまでとりあえず程度なので速度そんなにでないですが……。 速度改善の話 余分な型クラスを除去…

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

`dotnet new`用のテンプレートエンジン

不定期.NET Core SDK周辺調査メモ。 GitHub - dotnet/templating: This repo contains the Template Engine which is used by dotnet new かつてはdotnet new3と呼ばれていたらしい。 RC4時点でこいつがdotnet newで使われるのでどうでも良い知識ではある。 …

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な型や…

scala-zero-formatterのパフォーマンス改善と疑似Stage2対応

とりあえず動くものを~ということで0.1.0でリリースしていたのですが、ベンチマークをとったらさすがにJSON系ライブラリよりは速いものの、他のバイナリシリアライザに倍以上差をつけられる結果に「さすがに遅すぎる」と改善することにしました。 この記事…

ScalaとRust用のZeroFormatterライブラリを作り始めた

あけましておめでとうございます。 進捗どうですか? 私はダメです。 新年早々バイナリフォーマッターの話をします。 ZeroFormatterは、昨年の11月頃にneueccさんが公開したバイナリシリアライザーです。 詳しい話?は実装者の記事を読んでください。 ここで…

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に対応済みのテスティ…

scalaでmuscle assert的なライブラリの試作

Scalaでdogというテスティングフレームワークを以前から作ってみているわけですが、こいつでPersimmon.MuscleAssertみたいなことはできるのかなと思い作……ろうとして放置していたものを少し手直しして動くようにしました。 https://github.com/scala-kennel/…

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

F#

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