F#

「Persimmonでテストを書く」での疑問点に回答してみる

F#

Persimmon でテストを書く — a wandering wolf 上記記事で2点ほどあがっていたものがあるので。 Usingがない 検証さぼってただけです、すみません。pull requestだしたのでそのうち入るかもしれません。 enable use keyword by pocketberserker · Pull Reque…

Functional Java の HList を C# に移植して F# 拡張を作った

前々からFunctional JavaにHListが存在するのは知っていたのですが、なかなか手をだせていませんでした。 で、最近Lensライブラリ移植の息抜きにちょっと時間があったので移植してみました。 そもそもHListって? heterogenous list。 日本語ではたまにヘテ…

F# User Goup Japan用のgitter roomができました

F#

タイトルの通りです。 fsugjp/public - Gitter yukitosさん++ 何する場所? F#についてゆるふわ喋る場所です。 以前から scalajp/public - Gitter みたいなのがF#にもあるといいなぁ、と思っていたので、嬉しい限りです。 どう書けばいいのか こういうライブ…

Quoteメソッドでコンピュテーション式に介入する(実践編?)

F#

全国コンピュテーション式ユーザの皆様こんにちは。 GWの進捗どうですか? 私は駄目です。 ネプテューヌVⅡを1周しようと思っていたのにまだできていません…。 さて、今回はQuoteメソッドを使ってコンピュテーション式への介入しようという話の実践編(?)です…

scalacheckのcommandsパッケージをPersimmon.Driedに移植

F#

ちったーを眺めていたら 気がついたら ScalaCheck の状態付きテストができるバージョンが出てた。 URL Erlang 版 QuickCheck をマネしたんだとか。 URL #scalajp2015-02-04 13:30:06 via Twitter Web Client というつぶやきが見え、そういえば干し柿にはまだ…

CoArbitraryの実装比較

全国 QuickCheck 系ユーザの皆様こんにちは、もみあげです。 今日は CoArbitraryとScalacheck - scalaとか・・・ に関連して、各言語の QuickCheck 実装の CoArbitrary や Arbitrary (a -> b) インスタンスについてみていきましょう。 CoArbitrary とは Quci…

Persimmon用のランダムテストライブラリ案(もしくは scalacheck の F# 移植)

あけましておめでとうございます。 さっそくですが進捗どうですか? 私は駄目でした(Persimmon用VS Test Explorer拡張的な意味で)。 今回はランダムテスト実装の話です。 Persimmon と FsCheck の相性について FsCheck には IRunner という、拡張ポイントが…

F# 製ユニットテスティングフレームワーク Persimmon について #FsAdvent

F#

この記事は F# Advent Calendar 2014 の27日目の記事です。 内容は今年の10月末あたりから作っている Persimmon というフレームワークについてです。 諸注意 本記事に書くことはあくまでpocketberserker個人の見解です。 他の開発者がどう考えているのかは …

FsCheckのこまごまとしたこと #FsAdvent

F#

全国のF#erの皆様こんにちは、もみあげことなかやんぺんぎんです。 ここからは F# Advent Calendar 2014の延長戦(25日目)です。 英語圏と張り合ってるわけじゃ、ないんだからね!? 今回は今年めでたく正式版がリリースされた FsCheck についてちょっとした…

FsAttoparsecについて

F#

この記事は F# Advent Calendar 2014の16日目の記事兼ML Advent Calendar 2014の16日目の記事になります。 今日はF# のネタリストの中から、FsAttoparsecについてです。 attoparsec とは attoparsec は Haskell のパーサコンビネータライブラリの一つです。 …

Async小話(末尾再帰関数)

F#

過去にTomas Petricekさんの非同期に関する記事を翻訳しました。 Async in C# and F#: Asynchronous gotchas in C# (Japanese translation) この記事の最後には以下の記述が存在します。 また、F# の async も問題を持っています(最も一般的な落とし穴は、…

コンピュテーション式の Tips

F#

この記事は F# Advent Calendar 2014 - connpass の初日の記事です。 12月になってしまいましたね、進捗どうですか?私は駄目です。 タイトルは"コンピュテーション式の Tips"となっていますが、中身は Basis.Core や "Persimmon 内で使われているコンピュテ…

コンピュテーション式のカスタムオペレーターで遊ぶ

F#

柿プロジェクトを触っているときに思いついたネタです。 ホモビルダー 日本語を使ってみたかったので作ったもの。 ネタが思いつかなかったのでこのネタに…。 https://gist.github.com/pocketberserker/b0f67590f0bcc615b330 一番最初のカスタムオペレーター…

FsAttoparsecとattoの内部構造が変わった話とか

私が FsAttoparsec を実装し始めた5月頃、実は本家 attoparsec は内部構造を新しいものに変更していたということに先月末気が付きました*1。 どういう変更かというのは A major upgrade to attoparsec: more speed, more power | teideal glic deisbhéalach …

各言語でtype classesを実装する際に使いそうな道具とか

現時点における GHC、Scala、F#、Java の type classes 実装に使う道具比較をメモしておきます。 言語比較したいわけではなく、論争を繰り広げたいわけでもないのであしからず。 あとてきとーに書いてる感は否めないので、間違っている言葉、表現、概念など…

ermine-parser(scala-trifecta?)の F# 移植を試みたが…

F#

ermine-parser という、Haskell の trifecta を参考に実装されたパーサコンビネータライブラリが Scala には存在します。 ermine-language/ermine-parser · GitHub 今回はこれの F# 移植を試みました。 注意事項 F# で推奨される実装、ガイドラインから逸脱…

F# で高階型のエミュレーション

この記事では、F# で 高階型 (higher kinded types) をエミュレーションすることについて記述します。 本当は 函数型なんたらの集い 2014 in Tokyo - connpass で話そうと思っていたのですが、運営を考えると発表できる気がしなくなった*1ので、記事にしてお…

F# でFree MonadとOperational Monad(未完成)

F#

JavaでFreeモナドを表現するためのテクニックやexistential type(存在型)の話 - scalaとか・・・ JavaでFree Monadを実装する際のテクニックをxuweiさんが解説されているので、F#側も少し説明してみようと考えた次第です。 筆者はCLIやジェネリックに詳しく…

"JavaでFree Monad"をF# に移植してみた

F#

JavaでFree Monad - scalaとか・・・ 上記記事で紹介されているFree Monad in Java*1をF#に移植してみた。 https://github.com/pocketberserker/free-monad-fsharp 実用的かどうかとかF#っぽいかなどは置いておくとして、表現できなくもないようである。 実…

もみあげは如何にしてF# を学んだか

F#

現実逃避の一環として、私(私をもみあげと呼ぶ人もいる)がどうやってF#を学んだか書き下してみる。 ダイジェスト その言語に詳しい方からおすすめ書籍を教えてもらって学ぶ 挫折する 気が向いたときに1時間弱でできるコードを書いては晒す(ブログ、gistにか…

F# のパーサコンビネータライブラリ事情

F#

F# のパーサコンビネータに関するメモ書きです。 情報が揃ったら、Qiitaに投下するかもしれません。 種類 ここでは3つのライブラリを対象にします。 FParsec ParsecClone FsAttoparsec 他にも「これかけよ!」などあればご連絡ください。 FParsec http://www…

パーサコンビネータを使って簡単なNGワードフィルタリング機能を作る

F#

昔、 RSpec の入門とその一歩先へ - t-wadaの日記 を読んで「自分だったらどうつくるかなー」と考えていた。 そして時が経ち、パーサコンビネータを知った今となっては、簡単なものであればこれでいいんじゃないかと思っている。 というわけで、以下は F# の…

F# 用非公式 MessagePack ライブラリを作ってみている

F#

F# 特化型です。 ソースコード URL https://github.com/pocketberserker/FSharp.Data.MsgPack ライセンス Apache License 2.0 公式 公式は CLI 向けの msgpack-cli が存在します。 URL https://github.com/msgpack/msgpack-cli なぜ作ったの? 公式のものが …

F# プロジェクトが利用できそうな外部CIサービスについてのメモ

タイトル通りだけど無料版っぽいものがあるもののみ対象。候補は4つ。 Travis TeamCity AppVeyor Visual Studio Online Travis http://travis-ci.com/ みんな大好き Travis ちゃん。 どうやって動かすのかと思いきや、なんとLinux系ならapt-get、Macならmono…

F# でCPS版List.foldを作ってみよう

F#

自分用メモ。 まず fold を作る よく知られる List.fold の定義は、わかりやすいものであれば以下の様な形。 let rec fold' f acc = function | [] -> acc | x::xs -> fold' f (f acc x) xs これをCPS(継続渡しスタイル)に書き換えると // ('a -> 'b) -> (('…

継続渡しスタイルを使ってListコンピュテーション式を実装する

F#

引き続き、コンピュテーション式を継続渡しスタイルで実装する編です。 今回は、 コンピュテーション式におけるreturnとyield - ぐるぐる~ で定義されているListコンピュテーション式を、継続渡しスタイルで実装してみましょう。 なお、Using や Whileなど…

Listコンピュテーション式にyield breakもどきを作れないかあがいてみた

F#

コンピュテーション式におけるreturnとyieldにも書かれている通り、カスタムオペレーターで yield break を実装することはできません。では、型の力をつかってどうにかできないか、とあがいてみました。 Builder の定義 前述の記事で掲載されている ListBuil…

コンピュテーション式のSourceメソッドを試す

F#

前提 以下のエントリを読んでいることが推奨されます。 詳説コンピュテーション式 注意 src(e) は、ビルダーがSourceメソッドを持っており、 かつ最も内側のForEachがユーザによるもの(変換により生成されたコードではなく、ユーザが書いたコードであるとい…

コンピュテーション式の Quote メソッドで変換結果を見る

F#

前提 以下のエントリを読んでいることが前提となります。 詳説コンピュテーション式 また、F# のコードクォートに関する知識を持っていると、理解しやすいと思います。 今回のお話 QuoteメソッドはExprを取るRunとセットで拡張すればいいって話をお昼に @poc…

コンピュテーション式の実装にStateを用いる

F#

この記事は、以下の素敵記事にかなり依存しているので、先に下記記事を読んでください。 詳説コンピュテーション式 本記事は上記記事内の whileを実用するためのCombine において、 ちなみに、simple を関数にしなくても済む方法があります。 それを実装した…