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

Scalaz7.1系の最新開発版に依存したライブラリのテスト

あくまでも現時点の情報なので、ここに書いてあることの大半は結構すぐに古くなる、もしくは(おそらく7.1.0finalが出ときには)必要なくなる可能性があります。

2013年のScalaz

もう2013年も残すところ数日なので、振り返ってみましょう。 2012年はこんなものgithubで年間100 pull request した書きましたが、今年はScalazのコミッターになったり色々あって、github上でのかなりの活動の部分をScalazが占めるので、まずScalaz中心に201…

Playframework2でコンパイル速度を向上させるには?

あっ気づいたら、play2のScalaのアドベントカレンダー途切れてる・・・。 さて、play_jaのメーリングリストに「コンパイル速度遅いのでどうにかしたい」というような投稿があったので、せっかくなのでメーリングリストに直接返信するのではなく、blogに書い…

Scalaでの再帰的implicitとRank2Type

「再帰的implicit」という、普通にScala書いていたら遭遇しない話をします。なので、多くの人にとっては役に立たないだろうから、そういうのに興味のない人は読まないほうがいいです。

Scalaで抽象メソッドをoverrideする際にoverride修飾子を付けるべきかどうかの是非

まずいきなりコップ本第二版から引用(191ページ) 親クラスの具象メンバーをオーバーライドするすべてのメンバーにこの修飾子を付けなくてはならない。また、同じ名前の抽象メンバーを実装する場合、この修飾子はオプションとなるため、付けても付けなくても…

Scalaの正規表現

togetter 正規表現が構文として必要かどうかという話から プログラミング言語における正規表現リテラルの必要性についてこういう収集がつかなそうな話題にあまり首突っ込むの好きじゃないんですが、blogに書いておけば、まぁそれはそれでScalaをあまり知らな…

Playframework2のJsonやJsResultと型クラスとそれらに関する罠

これは Play framework 2.x Scala Advent Calendar 2013の17日目です。 アドベントカレンダーが埋まらないので、また役に立つかどうかわからない微妙なネタで、7日目に続き、2回目の参加です。

ScalazのTypeclassの図作った

以前「怖いScala」のときに紹介したように、すでに他の人が作ったクラス図が存在したりhttp://leifwarner.net/scalaz.svgまた、自動で生成されるクラス図のサイトかなり昔に作ったこともありますがhttp://class-diagrams.herokuapp.com/scalaz.MonadPlus.svg…

sbtの密結合な内部アーキテクチャ

sbt

sbtというと、独特なSettingのシステム*1や、Scalaで記述する内部DSL*2ばかりが注目されがちです。それらは、初心者にわかりづらかったりして批判されることが多かったり、逆にsbtを使い慣れた人にとってはとても強力で面白い仕組みです。Settingのシステム…

型パラメータをとらないcase classのコンパニオンはFunctionを継承する

知っててもそれほど頻繁には役にたたない(?)、トリビア的なもの。説明するよりコード示したほうがわかりやすい気がするので、まずはコード

今までPlay2にしたpull request

これは、Play framework 2.x Scala Advent Calendar 2013の7日目です。 誰得?なのかわかりませんが、標題の通り、自分が今までPlay2にしたpull requestまとめてみます。rejectされたものも一応いれておきます。Play2のScalaのアドベの参加者少ないらしいの…

プログラミングの魔導書3

http://longgate.co.jp/books/grimoire-vol3.html(一応レビューに参加した関係で)PDF版を発売前に頂きました*1 *1:献本頂きました、って書こうとしてこれ思い出して、こんな言い回しになったが、なんか難しい・・・ http://kentaro.tumblr.com/post/48615480…

標準ライブラリのJSONはScala2.11から非推奨になるので使ってる人は今すぐ使うのやめましょう

「非推奨になるからやめろ」というより「もともと設計がよくなくてとても使いづらい」です。それに加えパフォーマンスも良くない(悪い?)です。オマケ程度になぜか標準ライブラリに存在していただけで、そもそも最初から使いづらいのであまり使われていませ…

悲報: 限定継続に続きscala-swingも瀕死

以前こんなの書きましたが Scalaの限定継続が死ぬかもしれないらしい「*1typesafeのScalaコア開発者チームでは、限定継続をメンテしない」はほぼ決定事項になったようです。 *1:特にメンテナンスする人がでてこなければ

Scala2.11の警告機能がとても親切で素晴らしい件

何回かtweetした気もするけど、素晴らしいので別記事として書いておきましょう。まず以下の例みてください。

Travis CIがJava8に対応したらしい

You can now test your Java libraries and applications with Java 8 EA release on Travis CI! URL2013-11-27 17:56:36 via Bufferhttp://about.travis-ci.org/blog/2013-11-26-test-your-java-libraries-on-java-8個人的にはわりと嬉しいのだが、ほとんど…

Haskellでtypeclassのlawをテストするライブラリ

昨日の「怖いScala」という勉強会の発表中の自分の発言が発端で以下のような会話をしていたら

怖いScalaで発表してきた and 補足説明

http://xuwei-k.github.io/slides/kowai_scala http://connpass.com/event/4112/

FreeモナドでListを表現する

以下のtweetをそのままコンパイルしようとしたら、主にScalaの型推論の弱さのせいで全然コンパイル通らなかったので、とりあえずコンパイル通るようにしたものを貼っておくだけ。 type List[A]=Free[({type f[x]=Option[(x,x)]})#f,A];def nil=Suspend(None)…

ScalazのKleisliとEndomorphic

Scalazネタです。しかもわりとマニアックな、Scalaz初心者向けではないネタかもしれません。前から書きたかったけど、良いサンプルが思いつかなくて躊躇してましたが、良いサンプルを見つけたのでKleisliとEndomorphicについて書きます。

sbtのscripted testとsbt-launch.jarのversion

sbt

@mao_instantlifeさんが finatraさんをsbtで動くようにできないもんだろうか2013-11-15 17:45:17 via webと言っていたので、sbt-pom-readerを紹介しつつ、自分でも試す

関数型ガチ勢から見たScalaのアンチパターン

Scalazのコミッター、もしくはScalazを使いこなしているような関数型ガチ勢からみると、ある程度以下の様な共通認識*1がある気がする(けどあまり知られていない?)ので、ちょっとまとめてみました。 *1:twitter上やメーリングリストで、こういう意見を見かけ…

Scalacheckの絶妙なバグのせいで、Scalazのバグが見つけられなかった話

scalacheckでバグ見つかる https://github.com/rickynils/scalacheck/issues/75 内容を一言でいうと 「OpitonのArbitraryの質が悪い」 もう少し詳しく説明すると

ScalazのEqualと、ScalaUtilsの似たような何かの比較

"似たような何か"って酷いですが、なんて呼べばいいんでしょうか?ScalaUtilsという、ScalaTest作者が作ってるライブラリの中に、似たよう何かがあるわけですが、それを一言でいう場合、"Equality"ですか、"Equivalence"ですか、"TypeCheckedTripleEquals"で…

PartialFunctionの戻り値は必ずboxingされる

相変わらず、noboxというライブラリを作ってる途中で気づいた、(普通は気にする必要ない)細かいパフォーマンスの話です。 気づいた経緯は以下のような感じ

ScalaでOperational Monad(未完成)

runaroramaさんというScalazのFreeモナドを実装したり、まぁそのあたりに一番Scala界隈で詳しい有名な人が、 ScalaとScalaz使っての、Free、Yoneda、CoYonedaなどの解説blogを最近書いた↓ http://blog.higher-order.com/blog/2013/11/01/free-and-yoneda/

Predef.identityをプリミティブ型に対して使うと少し遅くなる(はず)

どうでもいい細かいパフォーマンスの話。とあるライブラリ作って遊んでる影響で、最近boxingや細かいパフォーマンスについて色々調べてるので、ついでに書いておく。

自作のnoboxというライブラリの現状報告

すでにこのライブラリのことについて2回書いてますが、 primitive型のArrayのwrapper scala.collection.mutable.ArrayOpsの遅さ思ったより飽きずに開発続いてるので、また現状報告

scala.collection.mutable.ArrayOpsの遅さ

昨日作った、noboxというライブラリ https://github.com/xuwei-k/nobox のベンチマークしたら、巨大な配列の場合は思ったよりそれなりに効果でる、という話

noboxというprimitive型のArrayのwrapperライブラリ作った

特にすぐに必要なわけでもないけど、なんとなく作った。https://github.com/xuwei-k/nobox