scalaz

Scala2.11でのvarianceに関する変更とScalaz

まだ公式アナウンスはされてないけど、2.11.0-M8がmaven centralに上がってます。さて、Scalaz7.0.xの安定版*1は、Scala2.11.0でもクロスビルドする予定です。 *2 しかし、Scala2.11.0-M8でビルドしたら、大量にコンパイルエラーになりました。その話 *1:201…

ScalazにYonedaとCoyonedaが入った

わーいhttps://github.com/scalaz/scalaz/commit/9636716d9f7068

IArrayという名前で、またScalaのImmutableなArrayのライブラリを作った

まずgithubのURLhttps://github.com/xuwei-k/iarraysetup方法はgithubのREADME参照

新しいScalazのApplicativeの構文を思いついた

Applicativeというより、正確にはApplyですが。まず、必要となる前提知識として、ScalazのApplicativeの書き方について説明。 (型推論の関係で)なぜか同じことするのに書き方が3種類(以上)あります。 あ、pab_techさんのスライドあるので、以下も参考にどう…

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

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

2013年のScalaz

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

Scalaでの再帰的implicitとRank2Type

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

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

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

ScalazのTypeclassの図作った

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

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について書きます。

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

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

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

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

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/

ScalaUtilsというのがちょっとだけ話題になってたので、Scalazで書きなおしてみた

この↓tweetが20くらい、favとRTされてる・・・ ScalaUtils `Or` is the data structure I have been trying to create for months. Easy to use and understand. URL2013-10-21 10:15:01 via iOSs単にScalazのeitherでは・・・というツッコミなど @BigJasonW…

Scalazの記号メソッドやクラス一覧

基本的にはgrepしただけ。アンダースコア始まり除けば結構減る。解説書こうかとおもったけど、一覧出して、思った以上に数が多くてやる気なくしたすみません・・・。

ScalazのAlign

Scalaz7.1.0-M3でました。開発中のマイルストーン版なので、7.0.xとも7.1.0-M2などともバイナリ互換性はありません。 気がついたら、7.1.0-M2から7.1.0-M3の半分以上のcommitが自分です。なので、おそらく誰よりも最近の変更点に詳しいです。 あとこんなこと…

SetはFunctorではない

SetがFunctorではない理由を延々と説明します。最初これhttp://failex.blogspot.jp/2013/06/fake-theorems-for-free.htmlを訳そうとしましたが、英語力と理解力のなさにより断念し、中途半端な翻訳になるなら、自分なりに書き下そうという結論になりました。…

Scalaz の NaturalTransformation

以下のやりとりなどをして、なんとなく書きたくなったので解説してみます。 @gakuzzzz implicitついてないし、型クラスのインスタンスではなく、「高階レベルの関数」ですね。Id型使いたいだけなら、それ使っていいと思います(なにに使うのか・・・?)2013-0…

Scalazのバイナリ互換性とmigration-manager

べつにバイナリ互換の話はScalazに限らないですが、Scalazが7.0.xにおいてmigration-managerを使ってバイナリ互換を保つことを実践している数少ないライブラリで、 「どうするとバイナリ互換が崩れるのか」「逆に、バイナリ互換が崩れない変更とは?」 とい…

Scalazで今後やりたいことメモ

単にScalazを使う側の話じゃなく 「Scalaz自体のライブラリ設計を今後どうするか?」 という話です。色々ぼんやりと考えていることがあるので、コミッターになったついでにちょっと書きだしてみる

Zip + Functor = Apply

また細かいtypeclassの話で、それほど重要じゃないけどメモ。 「ZipとUnzipのtypeclassにlawないけど、"Zip + Functor"とか"Zip + Functor + Unzip"なら、law作れるんじゃないの?」

MonadOr

https://github.com/scalaz/scalaz/pull/407自分: OnePlusという最近入ったデータ構造のtypeclassのインスタンスを追加したpull reqをする

Scalazは空飛ぶサンドイッチか?

Scala: 空飛ぶサンドイッチのパーツというわけで?「The Flying Sandwich Parts; TFSP」と、実際のScalazのスタイルを比較、考察する記事を書く流れですね!

Scalazのコミッターになりました

相変わらず最近もずっと地味なpull reqを送り続けていた*1わけですが、さっき気づいたらコミッターに加えられてた(((((((( ;゚Д゚))))))))・・・*2 githubな時代に「コミッター」という言い方はなんか変な気がしますけど、ほかにないですかところで、そうする…

MonadZero

以前この記事書いたときにHaskellのdoとScalaのfor式とEitherとMonadPlusMonadZeroというtypeclassに触れてなかったので、書こうと思います。

ScalacheckのFunctionのArbitraryとScalaz

Scalacheckに標準で、Function1からFunction5まであるのですがhttps://github.com/rickynils/scalacheck/blob/1.10.1/src/main/scala/org/scalacheck/Arbitrary.scala#L308-L336

ScalazのContravariant Functor(反変函手)について

最近コミットランキングで7位に浮上して、(コミッターじゃない*1のに)何人かのコミッターよりScalazへのコミット数が多いです⇒ こんにちは(#・∀・) https://github.com/scalaz/scalaz/contributors 圏論勉強会の第4回ででてきたContravariant Functor http:…