F#

コンピュテーション式で"はちみーのうた"

F#

コンピュテーション式でキーワード引数 - ぐるぐる~ や カスタムオペレーションの呼び出し順序を制御する - Qiita をみていたら久々にコンピュテーション式で遊びたくなったのでひとネタ供養。 今回のネタは状態遷移を書けると噂の”はちみーのうた”です。 …

ZStringを使ったPrintfモジュールを作りたい人生だった

F#

ZStringに組み込まれているものを使ってF#のPrintfモジュールに手が咥えられないか試してみたものの、成果は芳しくなかったので残骸だけ置いておきます。 https://github.com/pocketberserker/FSharp.ZPrintf 一番の問題はUtf16ValueStringBuilder向けのbpri…

MessagePack.FSharpExtensions 2.0.0をリリースしました

F#

www.nuget.org 全国約…何人かわからない F#erの皆様、お待たせしました(お待たせしすぎたかもしれません)。 MessagePack C# v2が正式リリースされてから6か月…さすがにまずいと思ったので重い腰をあげました。 実際は眠れない怒りをぶつけただけなのですけ…

NaNとMap

先日、JavaScriptで以下の挙動になるのはなんでだろうねという話になった。 > m=new Map(); Map {} > m.set(Number.NaN, 0) Map { NaN => 0 } > m.set(Number.NaN, 1) Map { NaN => 1 } > m.set(Number.NaN, 2) Map { NaN => 2 } > Number.NaN === Number.Na…

TryFSharpとその技術スタック

F#

今は昔、Web上で簡単にF#を試せるTry FSharpはSilverlight上で動作していました。 しかし世界から光が失われた結果、賢者たちは世界の再構築を余儀なくされたのでした。 Try F# というわけでTry FSharpは今もFSharp Software Foundation下で開発、運営されて…

F# 4.6の話

F#

忙しくて書く余裕がなかったF# 4.6についてです。といっても機能追加は小粒なのでさくっといきましょう。 間違ってたら指摘をお願いします。 ちなみにこの記事を書いている時点における最新の FSharp.Core は 4.6.2です。 FS-1030 https://github.com/fsharp…

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

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

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つをスキップしています。 スキップした理…

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 '&&'…

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>

F# で Entity Framework Coreる

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

技術書典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 | …

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#のコンピュテーション式を使うと呪文詠唱できます。 呪文詠唱自体に実用性はありませんが、やっていることは応用が効くかもしれません。 はじめに 突然ですが問題です。 詠唱 { モナドは 単なる 自己関手…

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