2014-01-01から1年間の記事一覧

2014年簡易振り返り

寝落ちしていたらこの時間になっていたので、簡易版で。 生活 25歳定年説の歳だったけど新卒2年目(だった年)に定年という悲しみのネタになりそうだったので記事はかかなかった 定時に帰ると時間が空く 朝の時間帯にパf-マンスがでない 東京に行く回数がふ…

スコープやオフサイドルール小話

この記事は F# Advent Calendar 2014 の28日目の記事です。 引き続きガス欠気味なので小ネタで。 module Hoge = let hoge = // lazy もオフサイドルールの対象である lazy let a = 1 a + 1 do // スコープが異なるので定義できる let hoge = 1 let mutable x…

1ファイル内に複数のnamespaceを書く

この記事は F# Advent Calendar 2014 の28日目の記事です。 ガス欠気味なので超小ネタで。 namespace Hoge type Fuga() = class end namespace Foo type Bar() = class end このコードは1ファイル内でコンパイルできます。 =が必要ないのがミソですね。 入れ…

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 …

"F# でのテスト用 DSL について考える"で書いたコンピュテーション式

発端や流れに関しては F# でのテスト用 DSL について考える — a wandering wolf を読んでください。 本記事では私が実装してみたコンピュテーション式についてゆるく説明します。 先に読むべきもの 詳説コンピュテーション式 - ぐるぐる~ コンピュテーショ…

#関数型なんたら という勉強会をやります(ニコ生もあるよ!)

2014年10月25日土曜日に関数プログラミング的な交流会(?)のような勉強会を開催します。 函数型なんたらの集い 2014 in Tokyo - connpass なぜ1週間前のこのタイミングで告知記事を書いているかというと、二木ニコ生放送があることを伝えたいからです(ドワン…

各言語で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ので、記事にしてお…

scodecでmsgpackライブラリを作ってみた

pocketberserker/scodec-msgpack · GitHub 名前は特に思いつかなかったのでそのまんまです。 実装理由 scalazフレンドリーなmsgpackライブラリがほしかった(建前) scodecの勉強のため そろそろ一度はscalaのライブラリレベルのコード書かないとなーと思って…

http4s 0.2.0の依存ライブラリについてメモ

http4s 0.2.0 時点での話です。 あと、特にぶつかりそうなライブラリのみ対象にしています。 scalazに依存するライブラリ群 http4s 0.2.0時点では、scalaz 7.0.x系に依存したものが使われています。 というわけで、たぶん他のscalazに依存するライブラリも 7…

ScalaのArgonautを触ってみた

最近、 Argonaut: Purely Functional JSON in Scala というライブラリを興味本位で触っているのでメモ。 利用したライブラリのバージョン "io.argonaut" %% "argonaut" % "6.0.4" "com.github.nscala-time" %% "nscala-time" % "1.2.0" サンプル 本家サイト…

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…

F# Asyncに関しての落書き その1

調べてる最中の落書きなので、指摘ある場合はどんどんお願いします。 コードを読むための前提知識(たぶん) .NETの非同期 継続 Trampoline ソースコード 今読んでるやつ https://github.com/fsharp/fsharp/blob/6ac6318858da25fe4f1d4728901c5824e9f3bf3a/src…

Microsoft MVP for F# を再受賞しました

再受賞しました。今年は無理だろうと思っていたので驚いています。これも私にF#を愛でるチャンスをくださり、後押ししてくださった皆様のおかげです。ありがとうございました!今後とも、よろしくお願いします。 去年は何かを作る方向でゆるふわできなかった…

社会人になってから1年経過して思ったことなど

詳しく書くほどでもないと思うので箇条書き。 多少日本語になっていない会話でも、なんとかならなくはないのかもしれない たまには外の空気を吸うべき(家と会社の往復のみは思考停止する) コード書く"毎日"は、それはそれで生きていると実感できる 仕事は選…

パーサコンビネータを使って簡単な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) -> (('…