F#
Persimmon でテストを書く — a wandering wolf 上記記事で2点ほどあがっていたものがあるので。 Usingがない 検証さぼってただけです、すみません。pull requestだしたのでそのうち入るかもしれません。 enable use keyword by pocketberserker · Pull Reque…
前々からFunctional JavaにHListが存在するのは知っていたのですが、なかなか手をだせていませんでした。 で、最近Lensライブラリ移植の息抜きにちょっと時間があったので移植してみました。 そもそもHListって? heterogenous list。 日本語ではたまにヘテ…
タイトルの通りです。 fsugjp/public - Gitter yukitosさん++ 何する場所? F#についてゆるふわ喋る場所です。 以前から scalajp/public - Gitter みたいなのがF#にもあるといいなぁ、と思っていたので、嬉しい限りです。 どう書けばいいのか こういうライブ…
全国コンピュテーション式ユーザの皆様こんにちは。 GWの進捗どうですか? 私は駄目です。 ネプテューヌVⅡを1周しようと思っていたのにまだできていません…。 さて、今回はQuoteメソッドを使ってコンピュテーション式への介入しようという話の実践編(?)です…
ちったーを眺めていたら 気がついたら ScalaCheck の状態付きテストができるバージョンが出てた。 URL Erlang 版 QuickCheck をマネしたんだとか。 URL #scalajp2015-02-04 13:30:06 via Twitter Web Client というつぶやきが見え、そういえば干し柿にはまだ…
全国 QuickCheck 系ユーザの皆様こんにちは、もみあげです。 今日は CoArbitraryとScalacheck - scalaとか・・・ に関連して、各言語の QuickCheck 実装の CoArbitrary や Arbitrary (a -> b) インスタンスについてみていきましょう。 CoArbitrary とは Quci…
あけましておめでとうございます。 さっそくですが進捗どうですか? 私は駄目でした(Persimmon用VS Test Explorer拡張的な意味で)。 今回はランダムテスト実装の話です。 Persimmon と FsCheck の相性について FsCheck には IRunner という、拡張ポイントが…
この記事は F# Advent Calendar 2014 の27日目の記事です。 内容は今年の10月末あたりから作っている Persimmon というフレームワークについてです。 諸注意 本記事に書くことはあくまでpocketberserker個人の見解です。 他の開発者がどう考えているのかは …
全国のF#erの皆様こんにちは、もみあげことなかやんぺんぎんです。 ここからは F# Advent Calendar 2014の延長戦(25日目)です。 英語圏と張り合ってるわけじゃ、ないんだからね!? 今回は今年めでたく正式版がリリースされた FsCheck についてちょっとした…
この記事は F# Advent Calendar 2014の16日目の記事兼ML Advent Calendar 2014の16日目の記事になります。 今日はF# のネタリストの中から、FsAttoparsecについてです。 attoparsec とは attoparsec は Haskell のパーサコンビネータライブラリの一つです。 …
過去にTomas Petricekさんの非同期に関する記事を翻訳しました。 Async in C# and F#: Asynchronous gotchas in C# (Japanese translation) この記事の最後には以下の記述が存在します。 また、F# の async も問題を持っています(最も一般的な落とし穴は、…
この記事は F# Advent Calendar 2014 - connpass の初日の記事です。 12月になってしまいましたね、進捗どうですか?私は駄目です。 タイトルは"コンピュテーション式の Tips"となっていますが、中身は Basis.Core や "Persimmon 内で使われているコンピュテ…
柿プロジェクトを触っているときに思いついたネタです。 ホモビルダー 日本語を使ってみたかったので作ったもの。 ネタが思いつかなかったのでこのネタに…。 https://gist.github.com/pocketberserker/b0f67590f0bcc615b330 一番最初のカスタムオペレーター…
私が FsAttoparsec を実装し始めた5月頃、実は本家 attoparsec は内部構造を新しいものに変更していたということに先月末気が付きました*1。 どういう変更かというのは A major upgrade to attoparsec: more speed, more power | teideal glic deisbhéalach …
現時点における GHC、Scala、F#、Java の type classes 実装に使う道具比較をメモしておきます。 言語比較したいわけではなく、論争を繰り広げたいわけでもないのであしからず。 あとてきとーに書いてる感は否めないので、間違っている言葉、表現、概念など…
ermine-parser という、Haskell の trifecta を参考に実装されたパーサコンビネータライブラリが Scala には存在します。 ermine-language/ermine-parser · GitHub 今回はこれの F# 移植を試みました。 注意事項 F# で推奨される実装、ガイドラインから逸脱…
この記事では、F# で 高階型 (higher kinded types) をエミュレーションすることについて記述します。 本当は 函数型なんたらの集い 2014 in Tokyo - connpass で話そうと思っていたのですが、運営を考えると発表できる気がしなくなった*1ので、記事にしてお…
JavaでFreeモナドを表現するためのテクニックやexistential type(存在型)の話 - scalaとか・・・ JavaでFree Monadを実装する際のテクニックをxuweiさんが解説されているので、F#側も少し説明してみようと考えた次第です。 筆者はCLIやジェネリックに詳しく…
JavaでFree Monad - scalaとか・・・ 上記記事で紹介されているFree Monad in Java*1をF#に移植してみた。 https://github.com/pocketberserker/free-monad-fsharp 実用的かどうかとかF#っぽいかなどは置いておくとして、表現できなくもないようである。 実…
現実逃避の一環として、私(私をもみあげと呼ぶ人もいる)がどうやってF#を学んだか書き下してみる。 ダイジェスト その言語に詳しい方からおすすめ書籍を教えてもらって学ぶ 挫折する 気が向いたときに1時間弱でできるコードを書いては晒す(ブログ、gistにか…
F# のパーサコンビネータに関するメモ書きです。 情報が揃ったら、Qiitaに投下するかもしれません。 種類 ここでは3つのライブラリを対象にします。 FParsec ParsecClone FsAttoparsec 他にも「これかけよ!」などあればご連絡ください。 FParsec http://www…
昔、 RSpec の入門とその一歩先へ - t-wadaの日記 を読んで「自分だったらどうつくるかなー」と考えていた。 そして時が経ち、パーサコンビネータを知った今となっては、簡単なものであればこれでいいんじゃないかと思っている。 というわけで、以下は F# の…
F# 特化型です。 ソースコード URL https://github.com/pocketberserker/FSharp.Data.MsgPack ライセンス Apache License 2.0 公式 公式は CLI 向けの msgpack-cli が存在します。 URL https://github.com/msgpack/msgpack-cli なぜ作ったの? 公式のものが …
タイトル通りだけど無料版っぽいものがあるもののみ対象。候補は4つ。 Travis TeamCity AppVeyor Visual Studio Online Travis http://travis-ci.com/ みんな大好き Travis ちゃん。 どうやって動かすのかと思いきや、なんとLinux系ならapt-get、Macならmono…
自分用メモ。 まず fold を作る よく知られる List.fold の定義は、わかりやすいものであれば以下の様な形。 let rec fold' f acc = function | [] -> acc | x::xs -> fold' f (f acc x) xs これをCPS(継続渡しスタイル)に書き換えると // ('a -> 'b) -> (('…
引き続き、コンピュテーション式を継続渡しスタイルで実装する編です。 今回は、 コンピュテーション式におけるreturnとyield - ぐるぐる~ で定義されているListコンピュテーション式を、継続渡しスタイルで実装してみましょう。 なお、Using や Whileなど…
コンピュテーション式におけるreturnとyieldにも書かれている通り、カスタムオペレーターで yield break を実装することはできません。では、型の力をつかってどうにかできないか、とあがいてみました。 Builder の定義 前述の記事で掲載されている ListBuil…
前提 以下のエントリを読んでいることが推奨されます。 詳説コンピュテーション式 注意 src(e) は、ビルダーがSourceメソッドを持っており、 かつ最も内側のForEachがユーザによるもの(変換により生成されたコードではなく、ユーザが書いたコードであるとい…
前提 以下のエントリを読んでいることが前提となります。 詳説コンピュテーション式 また、F# のコードクォートに関する知識を持っていると、理解しやすいと思います。 今回のお話 QuoteメソッドはExprを取るRunとセットで拡張すればいいって話をお昼に @poc…
この記事は、以下の素敵記事にかなり依存しているので、先に下記記事を読んでください。 詳説コンピュテーション式 本記事は上記記事内の whileを実用するためのCombine において、 ちなみに、simple を関数にしなくても済む方法があります。 それを実装した…