タグ

ブックマーク / xuwei-k.hatenablog.com (8)

  • 1443641775

    よく「どうやって情報手に入れてるの?」みたいに聞かれますが、そんなの、ひたすら時間かけてgithubみたりメーリングリスト読んだり最近ではgitterの会話読んでるに決まってます。 どうやって(How)ではなく、なぜ(Why)、自分がそんなことをするようになったのかを、あらためて書いてみる気になったので書いてみたいと思います。 書こうと思ったのは、Howだけ書いても、Why書かないとあまり意味ないと思うことが多くなったからですかね。(この件に関しては) 無責任に大雑把にいうと、(どんな理由であれ)情熱みたいなものがあれば、Howは自然に身につきます、たぶん。 なお、少し長くなるし、自分語りっぽくなるし、いつも書いてるようなものとは少し方向性が違い、具体的なすぐ役に立つ技術的な内容*1は基出てこないので、期待してるものが違うと思う人は、ここで読むのやめたほうがいいと思います。 どれほどコー

    1443641775
  • dottyという新しいScalaコンパイラ実装 - xuwei-k's blog

    公開されてました。たぶん1年くらいclosed sourceで開発されていたらしい? https://github.com/lampepfl/dotty https://groups.google.com/d/topic/scala-internals/6HL6lVLI3bQ/discussion グラフみると、小田好先生がほぼ一人で開発してます。 https://github.com/lampepfl/dotty/graphs/contributors また、小田好先生が、scala体に全くコミットしなくなった時期*1と完全に重なりますね。 (scala/scalaの最後のコミットが2012年10月31日。dottyの最初のコミットが2012年12月6日) https://github.com/scala/scala/commits?author=odersky https://git

    dottyという新しいScalaコンパイラ実装 - xuwei-k's blog
  • Scala2.10から2.11の変更点 - xuwei-k's blog

    例のごとく、最初に注意書き まだfinalがでていないので、細かい部分変わるかもしれません*1 個人的に、「大きい変更点だなと思ったもの」「ライブラリ側のユーザーが直接使うクラス関連*2」「なんとなく興味があるもの」を中心にとりあげただけで、すべてを網羅してるわけではありません finalがでるまではできるだけ随時更新する予定です Scala2.11.0は、今のところ順調にいけば2014年の2月には最初のRCがでて*3、3月にはfinalがでるらしいです。*4 https://issues.scala-lang.org/browse/SI しばらくこの記事がblogの一番上にくるように、少し未来の日付にしておきます。 2.9から2.10のときの変更点に比べると、だいぶ少ないですね。(2.9から2.10の変更点が多すぎただけですが)細かく追えていませんが、その分コンパイラ側の細かいパフォーマ

    Scala2.10から2.11の変更点 - xuwei-k's blog
  • Scalaのversion間の非互換について具体的に考える - xuwei-k's blog

    わりと以前から書いてみたかったことなので、書いてみます。 たとえば最近ではここ Web✕Java - HTML5で進化したWeb標準を、Java技術でどう扱うのか?でStruts使ってる人へJSFの説明をしてきた #jjug #html5biz でとりあげられていたりします。*1 昔からずっと言われてる話です。ですが、「互換性がない」とある程度多くの人が口をそろえて言う一方、「ではどのくらいの互換性があればいいのか(どういうポリシー?どのくらいの期間を保証?)」という具体的な議論がほとんどされていない気がします。 なので、もうちょっと具体的に考えてみたいと思います。 先日こんなtweetをしました @seratch 順調にいけば今年中にScala2.11はRC出るくらいになりそうだし、3世代クロスビルド(2.9、2.10、2.11)はかなり厳しいので、もし2.11サポートと同時に2.9切り

    Scalaのversion間の非互換について具体的に考える - xuwei-k's blog
  • sbtでプロジェクトファイルが変更されたらメッセージを表示する - xuwei-k's blog

    sbtでは、プロジェクトファイル(build.sbtとかproject/build.scalaとかproject/plugin.sbtとか)を書き換えても、プロジェクトをreloadしないと設定が反映されません。デフォルトでは、全くお知らせもエラーも出さずに、reloadするまでずっと古い設定を使い続けます。 なので、「プロジェクトファイルが変わったから、reloadしたほうがいいよ!」というメッセージを表示するだけのものをかいてみました Keyをbuild.sbt上で追加してたり、新しい文法使ってるので、sbt0.13限定です。sbt0.12対応するには、*.scalaファイルにしないといけなくて面倒になりました。 それぞれのプロジェクトに追加していたら面倒過ぎるので、グローバル(sbt0.13のデフォルトでは ~/.sbt/0.13/build.sbt )に置いたほうがいいと思います。

    sbtでプロジェクトファイルが変更されたらメッセージを表示する - xuwei-k's blog
  • HaskellのdoとScalaのfor式とEitherとMonadPlus - xuwei-k's blog

    標題の通り、色々書きたいことあって長くなってわかりにくくなりそうですが、頑張って書いてみます。なお、(2.8や2.9でもほぼ同じだと思いますが)Scalaのversionは2.10.1です。Haskellはghc7.4.2です。 「for文は7つしか使っていません(ドヤッ」という謎の主張を含んだスライドが最近流行っていましたが、まずScalaのfor式はMonadのための構文というのはお馴染みですよね!!! Monadそのものから説明していたらとても長くなってしまうので、そのあたりの説明は飛ばします。Scalaのfor式は、コンパイル時に内部的に以下のメソッドの組み合わせに変換されます map foreach flatMap filter withFilter なので、上記の5つのメソッド名は、予約語ではないですが、for式に変換されるという点において特別です。 for式を「Monadの

    HaskellのdoとScalaのfor式とEitherとMonadPlus - xuwei-k's blog
  • highj・・・Java8による本当の関数型プログラミング? - xuwei-k's blog

    最近以下のようなJava8の記事 Java 8を関数型っぽく使うためのおまじない をちょくちょく見かけるようになったので、自分もなにか書こうと思い、前からちょっとだけ気になっていた、highjというライブラリ https://code.google.com/p/highj/ https://github.com/svn2github/highj/tree/master/branches/java8/src/main/java/org/highj を読んでみて、概要を書いてみます。 Javaで関数型プログラミングというと、functional java https://github.com/functionaljava/functionaljava という、一年くらい前にちょっとblogにも書いたものがあります。 http://d.hatena.ne.jp/xuwei/20120427/13

    highj・・・Java8による本当の関数型プログラミング? - xuwei-k's blog
    takashabe
    takashabe 2013/05/01
    data structureあたりだけでも結構便利そう
  • sbt を理解するための sbt 自体のソースの読み方 - xuwei-k's blog

    sbt でわからないことがある場合、だいたい wiki をみる sbtのドキュメントはgithubのwikiからscala-sbt.orgに移りました! ソースを読む メーリングリストで質問する StackOverflowで検索 or 質問 というような選択肢になります。*1 それで、英語が微妙な自分の場合、結局ソースをみることが多いわけです。それで、今までそれなりにsbtのソースを読んでいるので、自分なりに思った sbtのソースのどこから読めばいいのか? 全体としてどういう構成になっているのか? をちょっと書いてみようかと思います。 (そろそろsbt0.12が出るはずですが)このblog書いている時点の安定版であるsbt0.11.2を基準にして書きます。まぁこれから書くようなことは、sbt0.12になってもあまり変わらないはずです。 1. まず Keys.scala 読め https:/

    sbt を理解するための sbt 自体のソースの読み方 - xuwei-k's blog
  • 1