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

Spring作者Rod JohnsonのScaladaysのkeynoteの件でtwitterが炎上してる件

基調つまり key note っていうのは音楽でいうコードとかベースにあたるもので、カンファレンスの雰囲気を決定するものですが、Scala Days 2013 の講演は特に 2日目はこれまでコミュニティーを支えて来た人の感情を逆撫でするような内容でした2013-06-25 23:5…

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

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

JavaやScalaのクロージャと無名クラスとメモリリークとSIP-21のSpores

"Scala Improvement Process" という新機能などの提案のための機構があって、最近SIP-21「Spores」というものが提案されました。http://docs.scala-lang.org/sips/pending/spores.html最終的にそれの話をするのですが、その前に前提としてJavaやScalaのクロ…

sbtでtest-onlyのような「補完が効いて、なおかつ補完の候補がキャッシュされるInputTask」を自作する方法

sbt

みなさん、sbtのtest-onlyとか使ってますか? http://www.scala-sbt.org/0.12.3/docs/Detailed-Topics/Testing#test-only 簡単にtest-onlyの動作を説明すると

Scalaでlazy valを再評価する方法

良い子は真似しちゃダメです。 twitter上で聞かれてgist作ったので、せっかくなのでblogにも貼り付けておきます。

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

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

Specs2のString Interpolationを使った新しいDSL

もうすぐ、specs2がversion2というちょっとややこしい(?)メジャーversionになって出るらしいです。でました。 新機能いっぱいあって自分も把握できてないんですが、その中でも面白いDSLが新機能として入っていたので、それを簡単に紹介します。 英語読める人…

MonadZero

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

Scalacheckの本がでるらしい

http://www.artima.com/shop/scalacheck書いてるのは、Scalacheckの作者本人。100ページくらいでわりと小さい感じ。まぁScalacheck自体、ライブラリのコードの行数かなり少ないのでそんなに多く書くこと無いでしょうしね

gitでremoteをfetch専用(push禁止)にする方法

git

git remote set-url --push origin no-pushinghttp://stackoverflow.com/a/7556269/605582githubで、「それぞれforkしてpull requestして共同作業する」という開発スタイルの場合、基本的に本体へ直接pushすることはありえないので、間違って直接pushしない…

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

Scala2.10のバグが多いけど、バグ修正と開発速度も速いという話

以下のような会話して、まぁ前から感じていたので実際にちょっとコミット数をベースに調べてみた

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

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

Playの依存性の多さについてまとめ

2.1.1時点の情報。*1他にもパターンあるかもしれないが、以下が「なんでScalaのプロジェクトなのに、guavaとかspringついてくるんだよ?」という典型的なパターンだと思う *1:2.1.2-RC1でも同じはず

underscore.jsとScalaのメソッドの対応表

「Scalaのコレクションのメソッド名はほとんど覚えてるのだけれど、underscore http://underscorejs.org 知らなくてこれから覚えたくて、Scalaとの対応表が欲しい!」という自分みたいな人が、どれくらいいるのか謎ですが、もしいたらお使いください。

コップ本のMonadに関する記述が一部不正確な件

Scalaスケーラブルプログラミング第2版作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレスジャパン発売日: 2011/09/27メディア: 単行本(ソフトカバー)購入: 12人 クリック: 235回この商品を含むブログ…

ScalaのFunctionからJava8のラムダへのimplicit conversion作った

https://github.com/xuwei-k/Scala2Java8例は、README見てください。

java8のOptionalにモナドのためのメソッドがないことによる想像される未来

また、きしだだんのblogへのトラックバックすいません・・・Java8でのプログラムの構造を変えるOptional、ただしモナドではない http://download.java.net/jdk8/docs/api/java/util/Optional.html追記:このblog書いた意味がなくなる以下のような話が・・・!…

Bindという型クラスの存在意義

結論とは関係ない流れから解説 この前blog書いたExtendという型クラスに関する話↓ @xuwei_k extendはbindの双対ですが、bindという型クラスがHaskellに無いからじゃないでしょうか??対称性が取れなくなるみたいな理由かなと感じました。Semigroupoidへ移動…

SemiComonadもしくはExtendという、Comonadに関連するtypeclass

一言でいうと、Comonadからcopoint*1を除いたものです。 *1:またの名をextract

map も flatMap も yield も使わずに、ScalaのforをMonadのための構文として利用する方法

注意: 遊んでみただけなので実用的ではない*1だろうし、この仕組みをあえて使ってる例全く見たこと無いし、初心者は混乱するかもしれないのであまり真面目に見ないほうがいいかもしれません *1:ここから色々工夫しないと、pointの型書かないといけないとか、…

ScalazのEndo

@markhibberd さんの Endo の話がわかりやすかったので、勝手に日本語の説明をつけたスライドを作りました

Java8でFunctionalJava

FunctionalJavaには、F1.javaやF2.javaなど、メソッド1つだけのabstract classを変更すればFunctionalInterfaceになるものが大量にあるので、ちょっと試してみました。 以下にわかりやすい書き換え例を上げておきます。 思ったよりも結構ラムダの型推論が効…

HaskellのdoとScalaのfor式とEitherとMonadPlus

標題の通り、色々書きたいことあって長くなってわかりにくくなりそうですが、頑張って書いてみます。なお、(2.8や2.9でもほぼ同じだと思いますが)Scalaのversionは2.10.1です。Haskellはghc7.4.2です。

Scalazでモナドの合成

まず、話の前提として以下の記事とか読んでおいたほうがいいです。モナドは合成できない( Translated Tony Morris's "Monads do not compose") 合成できるモナド、モナドが合成できる時

Scala の REPL から、無理やり Java8 を使う

まだScala側がほとんど対応してなくて、本当に無理やりです。追記 新しい命令にある程度対応したみたい(?)で、REPLでちょっと試したら変なエラーでなくなってるので、ScalaのFunctionからJava8のFunctionへの暗黙変換定義すればJava8をとても手軽に試せるの…

java.util.stream.StreamのメソッドとScalaの対応

またJava8の話。 Scalaの場合、ListでもStream*1でもVectorでも同じメソッドあるので、あえてどのclassなのかは明示しません。基本はJavadoc読んで雑に調べただけで、ちゃんと全部実行して試したわけじゃないので、明らかに間違ってたら教えて下さい。http:/…

「モナドはメタファーではない」に関する補足

日本語訳 モナドはメタファーではない 原文 Monads Are Not Metaphors原文が書かれたのはもう2年半くらい前ですが、いまだにたまにtweetされてたり、250くらいはてブがついてたり人気ありますね。で、説明中ででてくるコード例に関する補足というか、野暮な…

java.util.function.ToIntFunctionは、なぜjava.util.function.Functionを継承していないのか

Java8の話です。この記事Java8 の java.util.function package と Scala の対応表書いた後、java.util.functionパッケージ見て考えていると、ツッコミどころというか疑問点が大量にでてきて、どこからツッコめばいいのかよくわからないのだけれど、手始めに…

sbtがinvokeDynamicに対応してなくて、"Unknown constant: 18" っていわれる

sbt

java8*1 をダウンロードして、sbt0.12.3で以下のようなjavaファイルコンパイルしたら、エラーになった。*2 追記 sbt0.13系では、Scala2.10.xになったので、対応してる、はず *1: ここ から、 "8 Build b88" というversion *2:もちろんjdk8で直接javacすれば…