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…

.NET Fringe Japan 2016の個人的な振り返り

dotnetfringe-japan.connpass.com 運営及び発表者として参加しました。 運営といっても、勉強会運営に慣れている方が多かったのでやること・やらないことが初期から明確だった気がします。 当日の懇親会周りの運営を手伝えなかったのは申し訳なく思いつつ………

ueberauth_qiitaとueberauth_hatenaを作った

久々にElixirネタ。 といっても表題がすべてを表していますが……。 https://github.com/pocketberserker/ueberauth_qiita https://github.com/pocketberserker/ueberauth_hatena ueberauthはElixir向けの認証ライブラリで、RubyのOmniauthに強い影響を受けて…

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…

Babelの勉強と称してmuscle-assertを作ってみる

私は型がないと死んでしまう(コンパイラと相談しないと考慮漏れが多発して死ぬ)ので、JS系を触る場合は主にTypeScriptなのですが、とはいえ昨今の事情的にBabelを食わず嫌いするのなぁ…と思ったのでライブラリとそれ用のpuluginを作ってみることにした。 …

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://…

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

気がついたらまたカテゴリが変わっていましたが、今年で4回目の受賞となります。 Visual Studio and Development Technologiesとカテゴリ名が長すぎて未だに覚えられません。 覚えられないのでF#と言い張っておきます。 仕事でF#を使わなくなって久しいです…

継続を利用してAsyncコンピュテーション式を実装できるか試す

F#

Combine Deep Dives - ぐるぐる~ という記事にこういう文章があります。 このあたりを解決するために、Stateを使ったり継続を使ったりできるかもしれませんが、Async では未検証です。 そういえば検証したことはなかったなと思ったので、試してみました。 …

テスティングフレームワークとSemantic Versioningでなんか考えた

タイトルが釣りっぽくなっていてすみません。 寝起きにぼーっと考えていたら疑問に思ったけど、チラシの裏がないのでここに投げておきます。 この記事は疑問を書いて投げっぱなしにするので解などはかかれていません Semantic Versioning Semantic Versionin…

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…

2015年簡易振り返り

書いておかないと忘れるけどもう時間がないので簡易版。 生活 F# MVPから.NET MVPになった MVPらしい活動をしていたかどうかは微妙なところだが、なんかやってはいた気がする 転職した 転職の際にScalaMatsuriの情報を使わせてもらったお礼にと思ってインタ…

お前も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)のちょっとしたアレコ…

最近使っているScalaのライブラリ

これは Scala Advent Calendar 2015(アドベンター版) の4日目です。 3日目は、xuweiさんの ScalaからScalaPBというsbt plugin使ってProtocol Bufferを使う方法についてのドキュメントを書いている でした。 Protocol Buffer使ってみようかな…。 言い訳フェー…

SmlSharpContribについて

これはML Advent Calendar 2015と関数プログラミングAdvent Calendar 2015の一日目の記事です。 えすえむえるしゃーぷって? SML# - SML#のダウンロード 関数プログラミング交流会で調査した感じだと、知っている人は増えつつあるがユーザはまだそんなにと…