F#

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

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以上である必要があるため、諸…