Scala

速さのためなら for より while

VM を Scala で書いてて得た知見。(再検証せずに書いてますので間違ってたら教えてください) for (i <- 0 until 100) { ... } より var i = 0 while (i < 100) { ...; i += 1 } の方がとっても速い。 for にすると for の中身が (Java レベルの) 別クラスに…

Re: Re: Re: Re: 不満の記録

「安全じゃない」機能が簡単に使えるようになっているのは、どちらかというとJVMの上でScalaが実用言語としてやっていくための必要悪みたいなものであって、Scalaが言語として安全性を重視していないとかいい加減に扱っている、というわけでは無いのだと理解…

Re: Scala で小さい Applet を作る 8 手順

(だいぶ前に書いた記事で、公開にあたって再検証してないので、間違いがあったらごめんなさい。)ref: http://d.hatena.ne.jp/h_sakurai/20081213#p1flagir を作るときに参考にさせてもらったのですが、ProGuard のところで躓きました。 $ java -jar proguard…

Re: Re: 不満の記録

ref: http://d.hatena.ne.jp/kmizushima/20090615/1245002849またまたみずしまさんにいろいろ教えてもらいました。ありがとうございます。 束縛前の val 変数を参照できてしまった。かなりはまった。これは Scala のバグと言っていいと思う *1 。どう直すか…

不満の記録

flagir を作るなどの過程で感じた Scala への不満を列挙。こんな記事を (日本語で) 公開しても誰も得しないし誰も読まないだろうから、やめようかなとも思ったんだけど。ぼくの勘違いなら指摘してもらえるかもしれないし、記録という意味もあるのでやっぱり…

flagir: 国旗手書き検索

2016/08/11 追記 Java アプレットと自宅サーバが滅びたので、Android アプリとして作り直しました。https://play.google.com/store/apps/details?id=io.github.mame.flagir 国旗を描いて検索するアプレットです。国際競技の観戦などのお供にどうぞ。 ref: ht…

zipWith が欲しい

zip と map で簡単に実装できればまあいいかなと思ったんだけど、 val xs = List(1, 2, 3) val ys = List(4, 5, 6) xs zip ys map { (x, y) => x + y } // error: wrong number of parameters; expected = 1ぐああー。引数を n 個受け取る関数と n-tuple を …

勉強帳 (4)

資料: http://www.scala-lang.org/docu/files/ScalaByExample.pdf 9. Lists リストの作り方。 val fruit = List("apples", "oranges", "pears") val nums = List(1, 2, 3, 4) val diag3 = List(List(1, 0, 0), List(0, 1, 0), List(0, 0, 1)) val empty = Li…

勉強帳 (3)

資料: http://www.scala-lang.org/docu/files/ScalaByExample.pdf 5. First-Class Functions 関数がファーストクラスな話。 5.1 Anonymous Functions すでに出てきたと思うけど (x: Int) => x * x が匿名関数。Int 型の引数を 1 つ受け取って、二乗を返す。…

Re: Re: 勉強帳 (1)

ref: http://d.hatena.ne.jp/kmizushima/20090513/1242218451 みずしまさんにいろいろ教えてもらってしまいました。ありがとうございます。なんでも晒してみるもんですね。 static メソッドと普通のメソッドが混ざってるクラスは表現できるのかしら。 static…

勉強帳 (2)

Scala By Example を読みます。資料: http://www.scala-lang.org/docu/files/ScalaByExample.pdf 1. Introduction いんとろだくしょん 2. A First Example imperative に書いたクイックソートの例。 def sort(xs: Array[Int]) { def swap(i: Int, j: Int) { …

勉強帳 (1)

Scala を勉強してみます。売り文句だけ見てみると 1. 手続き型でも関数型でも書ける 2. 純粋なオブジェクト指向 3. 柔軟な文法で DSL しやすい 4. パターンマッチ 5. 静的型付け (ジェネリクスあり) 6. JVM で動く (Java の資産を活用できる) 1 〜 3 は Ruby…