SpanJson用の F# 拡張ライブラリを作った

SpanJson という新手のJSONシリアライザが今年になって登場していたので、調査がてらに F# 拡張を作りました。 https://github.com/pocketberserker/SpanJson.FSharp.Formatter https://www.nuget.org/packages/SpanJson.FSharp.Formatter/0.1.0 SpanJson自…

Akashic Engineでガチャが回せるゲームのサンプルを作ってみた

とある個人的な(?)イベントのためにガチャつきアドベンチャーゲームもどきを実装しよう、と思い至ったので作ってみましたというメモ書きです。 下記はその残滓(公開できない & したくないものを排除しシナリオを簡易化したもの)。 https://github.com/p…

F# 向けテスティングフレームワークPersimmonのv4系リリース

だいたい作業し終えたので告知です。 https://www.nuget.org/packages/Persimmon/4.0.2 https://www.nuget.org/packages/Persimmon.TestAdapter/0.11.0 https://www.nuget.org/packages/Persimmon.Dried/4.0.1 https://www.nuget.org/packages/Persimmon.Mus…

F# 4.5の話

気が付いたら nugetにFSharp.Core 4.5.0がリリースされていたので、4.5について雑多に書きなぐります。 Versioning F# はこれまで 4.0から4.1へとマイナーバージョンをあげていました。 ところが今回はF# 4.5、間の3つをスキップしています。 スキップした理…

Microsoft MVP for Visual Studio and Development Technologiesを再受賞しました

今年もなんとか受賞できました、6年連続とは我ながらびっくりですね。 関係各位ありがとうございます。 Visual Studio and Development Technologiesと言っても相変わらず F# が主戦場です。 とはいえ最近は.NET Core対応云々の話が多かったかもしれません。…

進捗大陸03に参加しました

booth.pm 紹介記事を書こう書こうと思っていたら、気がつけば技術書典04から数日すぎてました。 どういう流れで進捗大陸に拾っていただいたかとか、中身についてはno-maddoさんの記事をご覧ください。 私の記事ではBuckleScriptでなんちゃってaltJSを作る方…

F# 向けモックライブラリPersimmockを試作

F#

モックフレームワークやモックライブラリは.NET界隈にいくつかあって、特にF#にはFoqがあるわけですが、現状で満足か、と問われると微妙な顔持ちになります。 以下、1年半くらい前にFoqの行けてないところをzeclさんに尋ねたときの会話です。 使ってみると…

paket.referenceで複数のバージョン依存を設定する方法

.NET Core SDKというかnew fsprojになってから、以下のような依存関係を書く機会によく遭遇する。 <ItemGroup Condition="'$(TargetFramework)'=='net45'"> <PackageReference Include="FSharp.Core" Version="3.1.2.5" /> </ItemGroup> <ItemGroup Condition="'$(TargetFramework)'=='netstandard1.6'"> </itemgroup>

某講座のミニゲームを F# で実装してみよう

F#

https://dwango.github.io/articles/shachiku-chan-vol3/この記事関連で以下の反応をみかけた。 いきのこれ!社畜ちゃん4巻にはいよいよ F# が登場すると聞いて(嘘— はぇ~☆ (@haxe) 2018年1月23日 じゃあ試しにやってみましょうか、F# (というかFable)…

F# で `a == 1 && a == 2 && a == 3` と `2 + 2 == 5`

F#

もう誰かやってるかもしれない。 記事にネタがなくて困っていたので許して。 a == 1 && a == 2 && a == 3 https://stackoverflow.com/questions/48270127/can-a-1-a-2-a-3-ever-evaluate-to-true let (&&) _ _ = true 警告されるが warning FS0086: The '&&'…

golangのcobraで、サブコマンドとして外部コマンドを実行する

新年が明けたのでgolangに入門し、お試しにとコマンドラインツールを作っているところです。 その際に、外部コマンドをサブコマンドのように実行するにはどうすれば…と思って見つけたのが以下の記事です。 [Go言語]codegangsta/cliで、サブコマンドとして外…

F# を使って雑にExcelから取り出したデータをElasticsearchに放り込む

F#

この記事はF# Advent Calendar 2017の25日目の記事です。 大遅刻しましたごめんなさい…。 とあるExcelファイルがでかすぎて閲覧するのに苦痛だったので書きなぐった時のメモ。 .NET Coreです。 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> <ItemGroup> </itemgroup></project>

dotnet new用のテンプレートを使う、作る

この記事はF# Advent Calendar 2017の6日目の記事です。 F#固有の話ではないですが、知っていると少し捗るかもしれない話をします。 dotnet newコマンドでnugetに公開されたテンプレートを使う dotnet newは.NET Core SDKでテンプレートを用いてプロジェクト…

F# で Entity Framework Coreる

この記事はF# Advent Calendar 2017の5日目の記事です。 遅刻しましたごめんなさい…。 F# + .NET Core + Entity Frameworkの組み合わせて開発してみたときの備忘です。 もしかしたら多少古い知識が混ざっているかもれません(全部再検証するには時間がたりな…

F# erがOCamlを触ってみた感想

これは ML Advent Calendar 2017 2日目の記事です。 ここ半年ほど、とある社内勉強会でOCamlを使っているのでその感想をしたためておきます。 さほど中身のない内容ですがご容赦ください…。 ビルドツール等は5年くらい前に比べると格段に良くなった気がする …

新しい言語を触り始めた時に実装してみるもの一覧

ajitofm 13に「言語を学ぶ時に練習で何を実装してみるか」みたいな話が出ていた。 で、自分は何やっているかなーと思ったので書き出してみる。 全部やるってわけではなく、目的に応じていくつかやってみる感じ。 parser combinator パフォーマンスを求めない…

技術書典3で F# 入門的なものをだします

そういえば今回はえ14でいい場所っぽいです。もみあげ@pocketberserkerさんと共同スペースで前出したコンパイラ本の完全版を出します(予定https://t.co/LZfLZQg5OK— インターネットの闇 (@no_maddo) 2017年9月23日 なんとかまにあってよかった…。 表示は…

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