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

プログラマとしてOSSと関わりながら生き残るためにとった生存戦略

よく「どうやって情報手に入れてるの?」みたいに聞かれますが、そんなの、ひたすら時間かけてgithubみたりメーリングリスト読んだり最近ではgitterの会話読んでるに決まってます。 どうやって(How)ではなく、なぜ(Why)、自分がそんなことをするようになった…

Typeclassopediaに足りない型クラス

挙げようと思えばいくらでも挙げられるとは思うけれど、とりあえず自分が思ったものをいくつか挙げておきます。

2015年9月26日現在のScalaのweb frameworkのgithubのstar数での順位

ここで挙げてるやつで、あきらかにかなり上位に入るのに、なにか忘れてるあったら教えて下さい。

scalaz.Treeとカタラン数。そして代数的データ型とzipperと微分

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900・・・ という数列を知ってますか?カタラン数と言うらしいです。

未来から送られて来た関数型プログラミングロボット

ついにバレてしまったか・・・(ぇ

usagiというscalaz-stream (fs2) 使ったRabbitMQクライアント作った

https://github.com/xuwei-k/usagi

関数プログラミング交流会という勉強会で"Scalaにおける関数型並列並行プログラミング"という話をした

ほぼ資料貼り付けるだけのエントリ。広く浅く話しただけで、それほど新しい情報とかあるわけではないです

今日のscalaprops言及されてた情報

記念(?)に貼り付けておくだけのエントリ

scalaz.Leibnizの名前の由来

scalazに限らずHaskellもしくはCoqなどの定理証明系の言語の文脈でもLeibniz Equalityという言葉出てくると思いますが、その話

Divisible型クラスやそのメソッドの名前の由来

数日前にDivisibleなどのことを書きましたが、その名前の由来について、気がついたことをメモ。

ContravariantやInvariantなApplicativeとscalaz.Equal, Orderとscalaprops.Cogenと各種シリアライザ―(scodec, argonaut, play-json, msgpack4z)

タイトルにわざと色々詰め込んでとても長くしてみましたが、一言で言うとContravariantなApplicative使うとそれらが共通化出来て便利なことに気がついたのでpull reqしました。という内容です。

昔のQuickCheckのArbitraryにはcoarbitraryメソッドがあった件

標題のことに今更気がついて、少し想定外だったので、それをメモするだけのものです。

Scalaでのtagless final

ひたすらググって見つけたのをメモするだけのエントリ

Free PreArrow

せっかく書いたので、とりあえず貼っておく。 とくに解説も結論もない

sbtにおけるKeyとは何か? 〜 有向非巡回グラフ(Directed Acyclic Graph)とsbt

sbt

sbtを使ったことがある人なら、たいていSettingKeyやTaskKeyという言葉を聞いたことがあるはずです。もし聞いたことがなくても、1度でもsbtを使ったことがあるなら、すでに知らないうちにそれらに触れているはずでしょう。 それらSettingKeyやTaskKeyを含ん…

ekmett先生のdiscriminationというライブラリの動画を見たので雑に要約してみた

本当に雑に(前半部分だけを)まとめただけなので、ちゃんと知りたい人は、元動画やライブラリのコードや、元論文読むとよいです

2015-07-27現在joinしてるgitter room一覧

https://gist.github.com/xuwei-k/8ac08edd68928b794bafいつの間にかgitterだいぶ流行ってる

関数型Scalaという勉強会でproperty based testingについて話をした

Scalaの勉強会で半分くらいHaskellの話してすいませんでした。http://xuwei-k.github.io/slides/scalaprops/

Free MonadPlusはFree Monad TransformerにListを当てはめたもの?

Free MonadPlus調べようとしてtwitter検索してたらGabriel Gonzalezセンセのtweetをみつけたので

"MonadPlusは単なる自己関手の圏における近半環だよ。何か問題でも" の理解を試みる

それほど数学の素養ない筆者が、論文を斜め読みして「理解を試みてみた」記録です。最低限の雰囲気だけ説明してみるけど、雑だし正確な言い方もしないので、ちゃんと知りたい人は最初から元の論文を読もう。 といういつものような注意書きを書いておきます。

最近読んだ論文

以下のtweetしたように、最近それなりに、(主にHaskell関連の)論文読んでるのだけれど

本物のFree MonadPlus?

「もう一度来てください。本物のFree MonadPlusを見せてあげますよ」 そう言い残してScalaちゃんは去っていった・・・。

「Scalaに存在演算子を求めるのは間違っているだろうか」の解答例

なにやってるんだ・・・、と思いつつ見てたら、とりあえず解答を思いついてしまったので貼っておきます。Scalaに存在演算子を求めるのは間違っているだろうか

Scalaでcompanion contains its own main method, which means no static forwarder can be generatedというエラーの解説

英語ならもっと正確なわかりやすい解説あるかもしれないけど、とりあえず書いたので貼っておく。 (なにか間違っていたら教えて下さい)

2015年の前半振り返り

あまり長く書く気はおきないので手短に?と思ったけど、書いてみたら結局それなりな量になった。 1年まとめて書くと辛いので、半年という区切りで書くのはいいかも、と思ったので。

Scala2.11.7からのJava8に対応した新しいコンパイルオプションを試してみた

"新しい" とは、今まで全部無名classにコンパイルしてたラムダを、invoke dynamic使って動的に生成するようになるとかそういうやつ。

playframework2.4からのembedding server機能が便利

play2.4から、routesその他を書かずにScalaコードだけで手軽にhttp serverを生成、起動できる機能が入ったらしいです。 手軽にちょっとしたmockのサーバー作りたいとか、色んな用途に使えそうですね? 以下、sbtのscalasと組み合わせた最低限のサンプル(18行…

scalaz.ISetの木構造を可視化してみる

scalazのISetとは、Haskellの標準ライブラリのSetを移植したやつです。二分木です。

"-Yno-generic-signatures"というScalaのコンパイルオプションとバイナリ(jar)のサイズ

generic-signatureというもの(リフレクション経由でしか取得できない何か?)が、必要ないなら、コンパイルオプションに"-Yno-generic-signatures"指定すると、ある程度バイナリサイズ減ることに気がついた。 とある自分のライブラリ(scalaprops)だと、 7% く…

猫とscalazとscalacheckとscalapropsと私

さて、このあたりのこと色々ありすぎて書ききれないんですが、たまには少し書いておこうという気になったので書いておきます。