プログラミング言語 Scala 3冊目at TECH
プログラミング言語 Scala 3冊目 - 暇つぶし2ch1:デフォルトの名無しさん
09/12/26 07:24:16
The Scala Programming Language
URLリンク(www.scala-lang.org)

リンク集
URLリンク(sites.google.com)

前スレ
プログラミング言語 Scala 2冊目
スレリンク(tech板)


2:デフォルトの名無しさん
09/12/26 07:25:26
・Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
URLリンク(www.scala-lang.org)

・Scalaに関する書籍(英語)
URLリンク(www.scala-lang.org)
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Proの連載記事、各々で開かれた勉強会の資料などがあります。


3:デフォルトの名無しさん
09/12/26 08:29:35
ぬるぽ

4:デフォルトの名無しさん
09/12/26 09:31:54
Scalaのサイト、雪降ってるw

5:デフォルトの名無しさん
09/12/26 10:00:53
そりゃ、冬っすから

6:デフォルトの名無しさん
09/12/26 10:43:35
もっと雪降れ♪

7:デフォルトの名無しさん
09/12/26 10:47:01
( ^ω^)おっお

8:934
09/12/26 18:06:26
RC1版のものだと動かない、訳ではなくて、
2.8.0を入れないと駄目なんですね。
URLリンク(d.hatena.ne.jp)


9:デフォルトの名無しさん
09/12/26 18:40:19
寒いっすね

10:デフォルトの名無しさん
09/12/26 19:02:29
>>9
>>4

11:デフォルトの名無しさん
09/12/26 21:03:00
NetBeans 6.8でScala2.8を使う人向けリンクです。

Nightly Builds distributions (Scala 2.8.0のリリースまではここからダウンロード)
URLリンク(www.scala-lang.org)
Scala2.8.0 latest (Scala 2.8.0最新ビルド)
URLリンク(www.scala-lang.org)

Scala Plugins for NetBeans
URLリンク(wiki.netbeans.org)
Install with NetBeans 6.8 (Scala 2.8 + Scala plugins v1.1インストール方法)
URLリンク(wiki.netbeans.org)

nb-scala (NetBeans用Scala plugins V1.1ダウンロード)
URLリンク(sourceforge.net)
Scala plugins 6.8v1.1.0rc1 (現時点の最新版)
URLリンク(sourceforge.net)

12:デフォルトの名無しさん
09/12/27 15:27:01
NetBeans 6.8用のプラグインって上手く動かないんだけど・・・
Scala 2.8じゃないと駄目なの?

13:デフォルトの名無しさん
09/12/27 16:08:04
>>12
>>11

14:デフォルトの名無しさん
09/12/27 21:34:14
IDEどれがいいかなあ?
eclipseのやつはかなり補完してくれるけど、たまに変なエラー吐くし

15:デフォルトの名無しさん
09/12/27 23:59:41
補完の精度で言えば、間違いなくeclipseが一番だと思う
implicit conversionとかもちゃんと見て補完候補出してくれるし
ただ、eclipseのscalaプラグインは不安定で、お勧めできないのがな…
2.8.0ではeclipseのプラグインが安定して欲しいものだが。

16:デフォルトの名無しさん
09/12/28 01:26:43
低能乙

17:デフォルトの名無しさん
09/12/30 00:45:40
>>15
お、まじ?
implicit conversion でも補完してくれるのは大きいなぁ。
IntelliJは悪くはないんだけど、型推論が入っている個所とかは補完効かないんだよね・・・
あと、import文の整理がいまいち。

18:デフォルトの名無しさん
09/12/30 13:11:06
>>17
まじまじ。低能パワーをなめんなよ…

19:デフォルトの名無しさん
10/01/02 18:05:13
scalaのページ見たけど、地球の絵が描いてあるとどうしてこうビジネス臭がするんでしょう。
ビジネス臭くて近寄りにくいんですけど。

20:デフォルトの名無しさん
10/01/02 18:08:41
Mosaicってビジネス臭かったっけ?

21:デフォルトの名無しさん
10/01/02 18:13:08
>>20
実際にビジネス臭いかどうかは知らないけど、
地球の絵が描いてあるWEBページはビジネス臭く感じるということが言いたかっただけ。
深い意味はない。

22:デフォルトの名無しさん
10/01/02 21:00:33
>>21
ビジネス臭いというかなんか一気に胡散臭くなるよね
半年くらい前に今のページデザインに変わったんだけど、初めて見たとき
あまりに胡散臭くて噴いたもん

23:デフォルトの名無しさん
10/01/06 21:05:31
なんかlift難しい・・・LiftViewってどういう時に使うのかわかんね
struts1.XのLookupDispatchActionみたいなものだと思っておけばいいのか?

24:デフォルトの名無しさん
10/01/07 01:27:38
どこに地球の絵が描いてあるのかよく分からない・・・

25:デフォルトの名無しさん
10/01/07 02:45:49
スクリプト切ってると出ない

26:デフォルトの名無しさん
10/01/08 20:48:26
もうブームが去ったか・・・

27:デフォルトの名無しさん
10/01/08 20:59:58
毎年この時期はどのスレもあんまり延びない。
2月になればまた伸びるよ。

28:デフォルトの名無しさん
10/01/10 11:27:10
というかScalaはもう終わってるよ

29:デフォルトの名無しさん
10/01/10 17:09:01
>>28
勝手に終わらせないでくれ。

30:デフォルトの名無しさん
10/01/14 00:25:05
初心者だけど、XとY座標を扱うプログラムで
座標位置としてタプルを使うのは変?

31:デフォルトの名無しさん
10/01/14 00:38:43
変ではないけど、手抜きだと思う。
手を抜いていい場面なら、タプル使ったほうが楽だね。

32:デフォルトの名無しさん
10/01/14 01:05:16
>>31
元の質問者じゃないけど、ケースクラス使えってこと?

33:デフォルトの名無しさん
10/01/14 03:39:58
あちこちで座標を表すデータを使いまわすなら、
case class Point(x: Int, y: Int)
とかデータ定義した方がいいだろうね。

34:デフォルトの名無しさん
10/01/14 05:08:42
例えばPointというオブジェクトを定義したとして
それをMapのキーにして扱いたいんだけど、
 Point p1 = new Point(100, 100);
 Point p2 = new Point(100, 100);
これは値がいっしょでもインスタンスが異なるから別のキーとして認識しちゃう(Javaなら)
ScalaだとPointクラスをどう定義すれば(書けば)いいですか


35:y34
10/01/14 05:38:20
Javaならこんなんです
public class Point {
private int x、y = 0;
public Point(int x, int y) {
thisx. = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
@Override
public boolean equals(Object obj) {
boolean result = false;
if (obj instanceof Point) {
Point p = (Point) obj;
if ((this.getX() == p.getX()) && (this.getY() == p.getY())) {
result = true;
}
}
return result;
}
@Override
public int hashCode() {
int hash = 3;
hash = 47 * hash + this.x;
hash = 47 * hash + this.y;
return hash;
}
}

36:デフォルトの名無しさん
10/01/14 09:56:16
>>34
質問する前にまず試してみたら?と言いたくなるが、
ケースクラスはequalsメソッドも自動的に書き変わるから問題ない

37:デフォルトの名無しさん
10/01/15 19:12:07
>>36
一言余計

38:デフォルトの名無しさん
10/01/15 22:57:50
書き込み少ないな
goに流れたの?

39:デフォルトの名無しさん
10/01/15 23:01:03
goのほうがシンプルでいいよ。
それにネイティブだし。

40:デフォルトの名無しさん
10/01/16 00:13:23
GoとScalaはユーザーが全くかぶってないだろう

41:デフォルトの名無しさん
10/01/17 00:11:57
URLリンク(www.manning.com)
・Scala in Action
by Nilanjan Raychaudhuri
・Scala in Depth
by Jsshua D. Suereth

一年後ぐらい?

42:デフォルトの名無しさん
10/01/17 04:27:05
かぶるは、ruby?

43:デフォルトの名無しさん
10/01/17 09:06:10
かぶるのは、JavaやHaskellあたりじゃない?

44:デフォルトの名無しさん
10/01/17 10:13:17
Scalaはwebフレームワークが少ないからJavaの代わりにはまだならないな
Javaのフレームワーク使うって手もあるんだろうけど

45:デフォルトの名無しさん
10/01/17 14:11:02
結局Scalaは流行らなかったな

46:デフォルトの名無しさん
10/01/17 14:19:09
PHPもRubyもずっとそう言われ続けてきたが、
ゆっくりと浸透し続けて言ってるからなあ

47:デフォルトの名無しさん
10/01/17 14:20:26
Objective-CがiPhoneの影響でいきなり流行りだしたり
本当に将来は何が起きるかわからんよ

48:デフォルトの名無しさん
10/01/17 17:18:42
Obj-Cは一生流行りませんw

49:デフォルトの名無しさん
10/01/17 17:33:54
>>48
世の中何があるか本当に分からない
URLリンク(www.tiobe.com)

50:デフォルトの名無しさん
10/01/17 17:43:35
Web Flavorは生きてるのか?

51:デフォルトの名無しさん
10/01/17 20:50:12
>>45
Googleが買収したEtherPadが実はScala(だけじゃないけど)で
書かれてたりとか、foursquare.comがScala + Liftで書かれてるとか
地味にだが採用事例は増えて来てる。爆発的に流行しなくていいけど
着実に実績積み上げて行って欲しいな

52:デフォルトの名無しさん
10/01/17 20:51:07
>>50
一応生きてはいるみたい。ひょっとしたら、今年は何かアップデートが
あるかもね。

53:デフォルトの名無しさん
10/01/17 23:27:55
うおおおおお
IntelliJ IDEA
Community EditionのScalaプラグインすげえええええ!!!
EclipseとかNetbeansのプラグインがウンコだったが
IDEAのプラグインはマジで普通に完成されてるじゃん!
Scalaが俺の中で株を一気に上げまくった

54:デフォルトの名無しさん
10/01/18 16:02:18
>>53
君の言葉遣いにはウンコがついてるよ

55:デフォルトの名無しさん
10/01/21 05:41:20
2.8のドキュメントの形式は変更されたのか。
前スレでコレクションの関数が返す型がわからんとか
心配されてたけどちゃんと考えられてるのね

56:デフォルトの名無しさん
10/01/24 15:58:11
ubuntuの9.10を使ってるんですが、プラグインの関係でScala 2.8をしようとしています。
とりあえず>>11のnightly buildから最新版を落としてパスは通したのですが、
どうも実行する実体がスクリプトでcygwin/linuxなど環境によって実行ファイルを替えているためか、
apt-getで入れたものと比べ若干起動が遅くなってしまいました。(起動時に一拍置く感じ)
できればaptで入れられればありがたいのですが、scalaのnightly buildでaptパッケージのものとかないんでしょうか?
あるいはsubversionリポジトリから自分でコンパイルすればできますか?

57:56
10/01/24 16:02:54
ちなみにバージョンを表示させたときの実効時間はこんな感じです。

sin% /usr/bin/time -p scala -version
Scala code runner version 2.8.0.r20638-b20100123020158 -- Copyright 2002-2010, LAMP/EPFL
real 0.61
user 0.50
sys 0.06

sin% /usr/bin/time -p /usr/bin/scala -version
Scala code runner version 2.7.5final -- (c) 2002-2008 LAMP/EPFL
real 0.18
user 0.10
sys 0.02

この程度の差であれば、普通にコンパイルする分には気にならないもんでしょうか。

58:デフォルトの名無しさん
10/01/28 10:50:00
ようやく2.8のベータがでたらしい

59:デフォルトの名無しさん
10/01/28 11:50:55
Scalaの型推論って今後もっと型を明示しなくてもいい箇所が増えたりするものなの?

60:デフォルトの名無しさん
10/01/28 11:59:09
>>59
どうだろうね。そのような予定自体は特に無いみたいだが。
一般論としては、そもそもScalaみたいな型システム上でHaskellとかML並の型推論を
やるのは原理的に難しい。ローカルなメソッドに限定すれば、呼び出し側の情報も
使って推論するとかまだやりようはあるだろうけど。

61:デフォルトの名無しさん
10/01/28 12:37:12
>>60
どうもです。型推論は素晴らしいんだけど、推論してくれるところとしてくれないところが
はっきりしないのがどうも気持ち悪いんです。全部推論してくれる奇跡起きないかな

62:デフォルトの名無しさん
10/01/28 13:55:03
>>61
Scalaのような型システムで完全な型推論をするのは確か決定不能だったと思うので
どうにか制限を加えないと残念ながら、無理かと。

63:デフォルトの名無しさん
10/01/28 13:59:31
>>62
そうなんですか。おもしろいですね。>決定不能
でもScalaは好きなんで、今後も期待してます。

64:デフォルトの名無しさん
10/01/30 02:19:53
2.8.0 beta1

65:デフォルトの名無しさん
10/01/30 03:14:47
よーわからんが2.8はIDEが便利になりそうな悪寒

66:デフォルトの名無しさん
10/01/30 10:55:09
>>65
え?なんでですか?

67:デフォルトの名無しさん
10/01/30 12:30:15
お試しベータ版
URLリンク(www.scala-lang.org)

68:デフォルトの名無しさん
10/02/04 22:37:29
Scala 3.x proposal: drop method overloading (in light of 2.8 named params) and introduce slots listerals as in Fantom URLリンク(bit.ly)
だと

69:デフォルトの名無しさん
10/02/05 11:15:19
Eclipseでプラグイン入れて使ってるんだが、2000行程度のファイルを開くと死ぬほど重い、というか落ちる。
絶対処理のどっかにO(N^2)以上の繰り返しが入ってる気がする。

70:デフォルトの名無しさん
10/02/05 23:41:52
Scala 2.8 ベータ1リリース
URLリンク(www.infoq.com)

71:デフォルトの名無しさん
10/02/07 13:42:13
話題ないのな

72:デフォルトの名無しさん
10/02/07 20:41:12
>>57
2.8.0の起動たしかに重いね
scalac(コンパイル)も重いけど、こっちはfsc使えば気にならないかな。

あとは、別件だけど、
Windowsでコンソールで使う時は、Server VM使うように、
JRE単体ではなくServer VMを持ってるJDK側のJREを使ってる。
(64bitだとClient VMがなく、Server VMしかないらしいが)

各BATのデフォルトが _JAVA_OPTS=-Xmx256M -Xms32Mなので、
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18\jre
set JAVA_OPTS=-server -Xmx256M -Xms32M
を設定して使ってる。

ただし、JDKのバージョンあげた時に、変更するのはめんどくさい。

73:デフォルトの名無しさん
10/02/07 21:11:13
とりあえず手元にあったScala 2.8.0の夏ごろのビルドで試し、msysのtimeで計測 (CPU負荷は全部100%張り付いた)
ソース URLリンク(d.hatena.ne.jp)
C2D 1.2GHz 2GB Vista 32bit

Scala 2.8.0.r18207-b20090705020223 (Java HotSpot(TM) Client VM, Java 1.6.0_18).
JAVA_OPTS="-Xmx256M -Xms32M"
real 21.538s (user 0.153s sys 0.432s)
JAVA_OPTS="-Xmx256M -Xms32M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=25 -XX:GCPauseIntervalMillis=100"
real 24.090s (user 0.076s sys 0.430s)

Scala 2.8.0.r18207-b20090705020223 (Java HotSpot(TM) Server VM, Java 1.6.0_18).
JAVA_OPTS="-server -Xmx256M -Xms32M"
real 15.076s (user 0.076s sys 0.401s)
JAVA_OPTS="-server -Xmx256M -Xms32M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=25 -XX:GCPauseIntervalMillis=100"
real 22.017s (user 0.122s sys 0.401s)


74:デフォルトの名無しさん
10/02/09 00:39:25
>>68
この提案、FANTOM(Fan)の作者が指摘した内容そのままなのかw
Lex Spoonとかコメント書き込んでるんだw

■Fan vs Scala: Different Trade-offs ( URLリンク(fantom.org) )
> 『Slot Reflection』
> One of major design decisions Fan made a long time ago was to disallow method overloading.
> Method overloading is the kiss of death for easy reflection and meta-programming. In Fan any
> slot can be identified with the qualified name pod::Type.slot. Slot literals are built into the language:

> m := List#join // same as Slot.findMethod("sys::List.join")

> Languages like Java or Scala which support method overloading require the parameter types in
> order to perform method reflection. Identifying methods strictly by name is also a key enabler
> for efficient dynamic dispatch. This is a trade-off Fan and Scala have made differently - Fan
> took away a Java feature in order to simplify reflection and dynamic dispatch.

75:デフォルトの名無しさん
10/02/11 06:38:46
>>74
リフレクションの簡易記法を入れようってこと?
フレームワークとかDSL作ってる人にはうれしいのかな。
自分はリフレクション使ったことないからなぁ

76:デフォルトの名無しさん
10/02/11 19:09:36
誰かエロい人説明希望です。
リスト中に1つでも true があれば true を返すって問題を解くときに
下記の1つめがダメなのはなぜですか?
バージョン 2.7.7.final です

scala> List(false, false, false).exists(_)
res0: ((Boolean) => Boolean) => Boolean = <function>

scala> List(false, false, false).exists(_ == true)
res1: Boolean = false

scala> List(false, false, false).exists(e => e)
res2: Boolean = false

scala> List(false, false, false).exists(!_)
res3: Boolean = true

77:デフォルトの名無しさん
10/02/11 19:44:30
>>76
関数の部分適用になってるから
Scala は _ を使い回ししすぎな観もある
まあ、大体わかるんだけど

78:デフォルトの名無しさん
10/02/11 22:01:10
人気ないね(T_T)

79:デフォルトの名無しさん
10/02/12 03:47:39
今日使いはじめたよ。Java 使ってる身としては、夢のような言語。

80:76
10/02/12 11:24:44
>>77
サンクスコです!


81:デフォルトの名無しさん
10/02/12 16:02:48
すごくバランスが良い言語だな、と思いました。
ビジネス向けシステム開発とかにも多く利用されるようになりそう。

82:デフォルトの名無しさん
10/02/12 23:23:36
現状、ScalaにしろClojureにしろ、後方互換性のないコア部分の変更もあるから、
そこは注意しないと駄目だけど

83:デフォルトの名無しさん
10/02/13 04:02:22
疑問なんだが同じ内容の文字列をeqで比較するとtrueが返るんだが、
> "text" eq "text"
Boolean = true
eqってStringにないからRichStringに変換されて比較されると思うので
別のインスタンスだとfalseになると思ったんだが、違うのかな

RichStringを返すreverseメソッドを使って比較すると、こっちはfalseになる
> "text".reverse eq "text".reverse
Boolean = false

84:デフォルトの名無しさん
10/02/13 04:16:35
AnyRefのeqが呼ばれてる
Javaでいう、参照型を==で比較してるのと同じ
つまり、指すインスタンスの同一性を比較していることになる

その例だと、同一内容のリテラルだからキャッシュされてるんだろね

85:デフォルトの名無しさん
10/02/13 13:22:48
同一内容の文字列リテラルがinternされるのはJavaの仕様。

86:デフォルトの名無しさん
10/02/13 19:15:08
Scala上で定義した自作アノテーションをリフレクション経由で読み取る方法ってないですか?

87:デフォルトの名無しさん
10/02/13 19:58:33
>>84,85 レスどうもです
いろいろいじってたらなんとなくわかってきた。

class Str
class RichStr(val self:Str) {
 def eq2(rs:RichStr) = this eq rs
 def eq3(rs:RichStr) = self eq rs.self
}
implicit def str2richstr(str:Str) = new RichStr(str)

val str = new Str
str eq2 str    // false
str eq3 str    // true

自分はこのeq2のようなのではと思ってたけど
実際にはeq3のような処理になってるのかな

88:デフォルトの名無しさん
10/02/13 21:57:16
>>87
いや、そんなややこしい話ではなくて、StringのスーパークラスであるところのAnyRef
にeqメソッドがあって、これはJavaの==と同様に参照の等価性を判定してるってだけの
ことであって、implicit conversionは関係無い。Javaで"text" == "text"と書いたのと同じ。

89:デフォルトの名無しさん
10/02/13 23:20:13
>>87
もしかしてJavaの(プリミティブ型以外の)クラスはAnyRefのサブクラス扱い?

90:デフォルトの名無しさん
10/02/14 01:40:04
>>89
もしかしても何も、AnyRefはObjectの別名。

91:デフォルトの名無しさん
10/02/14 06:56:59
>>90
thx!
コンパイル後はJavaのObjectとして扱われる、とはなんとなく思ってたけど
言語的には別物だと勘違いしてたわ

92:デフォルトの名無しさん
10/02/15 18:31:30
Scalaのfor式ってHaskellでいうdo構文に対応するって言うけど、 do { x <- m; expr } みたいなのはfor式でどうかくんだ? Scalaでは書けない?

93:デフォルトの名無しさん
10/02/15 23:40:11
>>92
全く同じ形では書けないな。あえてやるなら、
for(x <-m; _ <- expr) ...
とかするしかない。

94:デフォルトの名無しさん
10/02/16 10:28:46
>>93 それだとexprの結果が無視されない?
x = do { x <- m; expr }
みたいに使いたいんだ。やっぱりScalaでは実現不可能?

95:デフォルトの名無しさん
10/02/16 12:13:04
>>94
exprがreturn expr2の形なら、for(x <- m) yield expr2で書けるけど、それ以外の場合は
forだとちょっとやりづらいかなー。ちょっと見た目が変わるけど、等価な形式なら
val x = for(x <- m; y <- expr) yield y
とか。それ以外だと、
flatMap(要はHaskellの>>=)直書きするしか。
val x = m.flatMap{x => expr}

96:デフォルトの名無しさん
10/02/16 12:15:10
>>95
自己レス。等価というのはforの中で副作用が無い場合の話ね。forの中で副作用があった場合、
上の書き換えは等価じゃなくなるので。

97:デフォルトの名無しさん
10/02/16 12:43:46
>>95 おぉありがとうございます。
x = do { x <- m; expr }

val x = for(x <- m; y <- expr) yield y
の書き換えでこれからモナドります。

98:デフォルトの名無しさん
10/02/16 21:44:01
Scalalab に興味ある人います? (科学技術計算用途のScala)

現時点でどれくらい実用になるんだろうか。


MatlabとかScilabとかって、手続き型言語なんで、やってられんので、
Scalalabにはがんばって欲しいなあ。


99:デフォルトの名無しさん
10/02/16 22:07:31
>>98
科学技術計算は専門じゃないしそれほど興味も無いけど
内部実装がどんな感じなのかには興味あるな。

100:デフォルトの名無しさん
10/02/19 08:12:21
URLリンク(sourceforge.jp)
GroovyからREPLを移し作ってるのか。

jLabのほうは速度の記述ないけど、scalalabは、その部分で速度稼げてるのか
> It is the basic scripting engine. Its scripting code is extremely fast,
> close to Java, and about 20-40 times faster from equivalent Matlab .m scripts!

101:デフォルトの名無しさん
10/02/19 23:08:05
なんか今一盛り上がりに欠ける

102:デフォルトの名無しさん
10/02/20 01:07:05
erlang/OTPなどを実装したakkaとか
分散処理のspawnとか
Web Frameworkもろもろとか
Apache CamelとかScala自身で、DSLとか
分散オブジェクトキャッシュ?KVS?のGoat Rodeoとか
なにをどう使えばいいのかようわからん。

103:デフォルトの名無しさん
10/02/20 01:39:54
twitterの人のはなんかないかな
URLリンク(github.com)
KVSサーバー側は、Scalaじゃなくても高スループットで可用性上がっている
国産のを使えばいいような気がするが・・・って、kestrelはqueueなのか

104:デフォルトの名無しさん
10/02/20 12:18:29
びみょうな本がでたらしいね。
みてないけど。

105:デフォルトの名無しさん
10/02/21 02:45:20
>104

Steps in Scala: An Introduction to Object-Functional Programming
これか? 2010.9月発売だけど。


Pro Scala: Monadic Design Patterns for the Web Gregory Meredith (ペーパーバック - 2010/4/25)
それとも、こっち?

106:デフォルトの名無しさん
10/02/21 11:39:43
これじゃないかな。

やさしいScala入門
URLリンク(www.cutt.co.jp)


107:デフォルトの名無しさん
10/02/21 11:48:30
なにそれ、そんな本出てたんだ
Amazonにはないみたいだけど、なんかあやしい感じだな
目次がJavaの入門書と区別つかないし
どう見ても地雷本

108:デフォルトの名無しさん
10/02/21 14:26:59
Scalaスレにもなると一発で見抜かれるんだなw

109:デフォルトの名無しさん
10/02/21 15:07:36
想定している読者層がよく分からない本だな。

110:デフォルトの名無しさん
10/02/21 16:43:45
お気楽極楽のカットシステムじゃあなぁ

111:デフォルトの名無しさん
10/02/21 18:23:18
出版社名で避けるレベル。

112:デフォルトの名無しさん
10/02/22 00:54:46
>>106
> やさしいScala入門
> URLリンク(www.cutt.co.jp)

初心者向けの本が出て、ユーザーが増えるのは、喜ばしいことじゃないかな。
あと、初心者向けの本は、一気に速読できるので、上級者が速習するのにも使えるし。

でも、この出版社の本って、紙質が厚めなので、ページ数の割りに厚くて重い本になる。
だから買う気にならない。


文庫本サイズで出してくれれば、電車の中で読む用に買っても良いのだが。。


113:デフォルトの名無しさん
10/02/22 01:38:31
この本でユーザーが増えるのか?
「Javaの方が簡単じゃん?関数って意味わかんねw」って思われるだけじゃね?


114:デフォルトの名無しさん
10/02/22 08:25:09
>>113

>「Javaの方が簡単じゃん?関数って意味わかんねw」って思われるだけじゃね?

それはありえない。
なぜなら「やさしいScala入門」を手に取る人は、おそらくJavaも知らない人だろうから。w
もっと売れる本を作れば良いのにねえ。あそこの出版社は。
厚くて重い割に、中身がソースでページが割かれていて内容ないので、買う気にならない。
レイアウトとサイズを考慮して欲しい。文庫本大くらいだったら、買ってやるのに。

>この本でユーザーが増えるのか?

この本では増えないだろうね。
でも、最近、初心者向けScalaの本が増えてるので、人気高まるかも。

こちらは3月発売予定のだけど、、、どうだろうか?

初めてのScalaプログラミング
DavidPollak/著
出版社名:日経BP出版センター
発売予定日:2010年3月19日

115:デフォルトの名無しさん
10/02/22 08:58:54
>>106 >>111
著者名でも避けるレベルですな。

116:デフォルトの名無しさん
10/02/22 09:21:53
やさしい(インタープリタ|コンパイラ)の作り方入門の人かw

117:デフォルトの名無しさん
10/02/22 09:42:26
>まとめ
>『やさしいScala入門』はひどい本である。
>関数型プログラミングについてほとんど触れられていない
>Scalaの特徴的な機能があまり紹介されていない
>基本的な事実誤認や珍妙な解説が散見される

URLリンク(d.hatena.ne.jp)

118:デフォルトの名無しさん
10/02/22 11:14:37
>>115
誰かと思ったら日向俊二か…
この人と矢沢久雄は著者名だけで機械的に選択肢から外していいよ。

119:pom
10/02/22 11:26:46
この本&日向俊二がひどいのは、言うまでもないとして、矢沢久雄って人、知らんかったけど、ダメな人なの。なんか偉そうなこと書いてるようだが。

120:デフォルトの名無しさん
10/02/22 11:39:18
多くの本を書いているけど、一冊として役に立たないクズ本ばかりという点で矢沢と日向は似ている。

121:pom
10/02/22 12:51:14
ふむふむ(頭にメモ)。
先程の書込み、句読点変ですまん。
(まぁ、妙な本を出版するよりは・・・)

122:デフォルトの名無しさん
10/02/22 13:12:06
まあ、こういう粗悪安物ライターが喰い付いてくる程度にはScalaもメジャーになったと考えればいいのでは。
個人的にはOderskyの本さえあれば十分じゃないかと思うけどね。

123:デフォルトの名無しさん
10/02/22 17:31:10
>>114
>初めてのScalaプログラミング
>DavidPollak/著
>出版社名:日経BP出版センター
>発売予定日:2010年3月19日
たぶんBeginnin Scalaの翻訳版だと思う。著者のDavid Pollakさんは
Liftの作者だから内容に関しては信頼して良いだろう(訳がよっぽどおかしくなければ)。

124:デフォルトの名無しさん
10/02/22 18:08:40
h t t p://www.amazon.co.jp/gp/cdp/member-reviews/A1DXJM7NYG32SJ/

魚拓とっといてもいいレベル

125:デフォルトの名無しさん
10/02/22 23:20:32
配布してるソースコードのアーカイブ形式が lha というだけで、なんか「違う」んだよな

126:デフォルトの名無しさん
10/02/23 08:16:01
立ち読みしてきたけど、たしかにこれはひどいや。まさに上のブログの通り。
日向ってまともにプログラム書いたことなんてないんだろうな…
駄本書くために自分がわかる範囲でちょこっといじる程度なんだろうよ。

127:デフォルトの名無しさん
10/02/23 09:40:10
文法的には、odersky本(通称、コップ本) があれば十分かなあ。

今、日本で望まれているのは、もっと応用的な本かと思われ。
Liftつかって、こういうの作れます、、みたいなの。
それとも、scala逆引き辞典みたいなのか。

scala使うことを生かせる応用分野って何かあるかなあ?


>126
日向の最近の本でいうと、
「やさしいコンパイラの作り方」
「やさしいインタプリタの作り方」
の本を買っちゃったよ。

紙面の大半が、氏のオリジナル言語を実現するコンパイラのソースで、
まあ、それを読む価値はあるといえばある(他のコンパイラ本は理論的過ぎて難しいので)けど、
説明の方はイマイチな気がする。
要するに買ったけどまだ読んでいない。w


128:デフォルトの名無しさん
10/02/23 09:44:46
Rubyの場合だけど、アルゴリズムとかオブジェクト指向を考えるのに、Rubyで考えると分かりやすいって
最近気付いた。

でも、Scalaの場合は、どうかなあ? まだ、Scala良く分かってない。
だれか、「Scalaで学ぶアルゴリズム」みたいなの、書いてくれないかなあ。

129:デフォルトの名無しさん
10/02/23 09:54:56
>>124
「知らないと恥をかくプログラミングの常識」の
コメントが自作自演を指摘しています。
URLリンク(www.amazon.co.jp)

130:デフォルトの名無しさん
10/02/23 10:20:09
なるほど、これは悪質だな
Odersky本にケチをつけて自分の本に誘導してたのか
まあ、間に受けるやつなんて誰もいないだろうけど
著者もひどいが、こんなやつに書かせている出版社も問題だな

131:デフォルトの名無しさん
10/02/23 11:04:57
scalaスケーラブルプログラミング今読んでるんだけど
コードの変数名にxsとかysとかよくでてくるけどなんの略なの?

132:デフォルトの名無しさん
10/02/23 11:19:56
>>131
本は見てないけど複数形じゃね?

133:デフォルトの名無しさん
10/02/23 12:10:35
わかた、sequenceの略っぽいすね
リストのリストとかにはxssとかも使われてますな

134:デフォルトの名無しさん
10/02/23 17:28:45
関数型言語の教科書なんかだとよく xs, ys, ... という変数名が使われるね。

135:デフォルトの名無しさん
10/02/23 17:39:53
昔からPrologだとリストの先頭要素をX、残りのリストをXsで表すことが多い
ユニフィケーションで [X|Xs] と書く
Haskellのパターンマッチングだと (x:xs)
だから複数形でよくね?

136:デフォルトの名無しさん
10/02/23 19:15:36
var map = Map("a" -> 1)
map += (("b",2))
だといけて
map += ("b",2)
ではいけないのはなぜなの?

137:デフォルトの名無しさん
10/02/23 19:47:28
「+=」をメソッドだと思えば、その理由がわかるのでは?
ちなみに、
map += ("b" -> 2)
だとOKなんだね
「->」と「,」って等価ではないのか

138:デフォルトの名無しさん
10/02/23 19:58:24
class Hoge {
def +=(t:Tuple2[String,Int]) = {}
}

val hoge = new Hoge
hoge += ("b",2)

これだといけるみたいですねぇ…やっぱわかんなす

139:デフォルトの名無しさん
10/02/23 20:31:18
>>136
map += ("b", 2)
の場合、("b", 2)という二つの引数を取るメソッド呼び出しであると
解釈されるから、だね。

>>137
基本的には同じだと考えて問題無いけど、
-> は単なる組み込みライブラリの*メソッド*に過ぎないのに対して、
(,)はタプルを作るための組み込み*構文*なせいで、上のケースのように
微妙に異なる解釈されちゃうケースが出てるってことだね。

Scalaだと、複数引数を取る関数とタプルを引数に取る関数が異なる扱いに
なってるので、その弊害とも言えるかも。

140:デフォルトの名無しさん
10/02/23 21:02:30
>>138が気になって2.8のコレクションのソースコード眺めてみたけど、なんでなのかわからんね
なんでそれはよくて、mutableのMapだと駄目なんだろ

しかし、2.8のソースって読みづらすぎね?
関数型言語としてみると、標準ライブラリがこんなにごちゃごちゃしてるというのは問題だと思うんだけど
普通、言語を勉強するときって、標準ライブラリを読むもんでしょ
十分メジャーになって、本もたくさん出てるから、そっち読みなさいってことなのかなあ

141:デフォルトの名無しさん
10/02/23 21:10:10
class Hoge {
def +=(t:Tuple2[String,Int]) = {}
def +=(t:Tuple2[String,Int], t2:Tuple2[String,Int]) = {}
}
val hoge = new Hoge

hoge += ("b",2) //だめ
hoge += (("b",2)) //いい

なんかオーバーロードが関係してるっぽいことを発見

142:デフォルトの名無しさん
10/02/23 21:16:22
>>141
ああ、それが原因だね
2.8のソースコードのGrowable.scalaに
def +=(elem1: A, elem2: A, elems: A*): this.type = this += elem1 += elem2 ++= elems
というのがある

2.7のソースだと同じところにあるのに
2.8だとMap → MapLike → Growableと継承されてんだよな
他にもMapLikeBaseとかあるしさ
オーバーロードメソッド見つけるのもしんどいわ

143:デフォルトの名無しさん
10/02/23 21:19:30
つまりオーバーロードがない場合だと
hoge += ("b",2)はt:Tuple2[String,Int]の引数しかとらないことを知ってるから
hoge.+=(("b",2))に解釈してくれて(勝手にタプルにパックしてくれる?)
ある場合は
パックしてt:Tuple2[String,Int]をとるメソッドに渡していいのか
t:Tuple2[String,Int], t2:Tuple2[String,Int]の引数の型間違えなのかわからないってことですかね

144:デフォルトの名無しさん
10/02/23 21:30:46
いやなんかぜんぜん違う気がしてきた

145:デフォルトの名無しさん
10/02/23 22:00:40
>>143
Scalaのメソッドは二項演算子化して括弧を省略できるよ
要するに型推論のアルゴリズムの問題でしょう
オーバーロードされてて括弧を省略されると、タプルと引数の区別ができないと

タプルは -> を使ったほうがいいね
hoge += "b" -> 2
これでいいわけだし

146:pom
10/02/23 23:13:36
>タプルは -> を使ったほうがいい
だね。
関係ないが、
scala> var map = Map{"a" -> 1; "b"->2}
map: scala.collection.immutable.Map[java.lang.String,Int] = Map(b -> 2)

scala> var map = Map("a" -> 1, "b"->2)
map: scala.collection.immutable.Map[java.lang.String,Int] = Map(a -> 1, b -> 2)

といったあたりも、
OCamlやらJavaScriptやら他言語のユーザーからすると微妙にストレスなのかな。
表記法は好みの問題も大きいところだろうけど、間違いの少ない表記が言語ユーザー間である程度確立
することは大事だね。

147:デフォルトの名無しさん
10/02/24 01:53:55
俺も、タプル前後のスペースの有無で何回もハマった。
おかげで、(a -> b) か Pair(a, b) でごまかす事を覚えたが。

148:デフォルトの名無しさん
10/02/24 02:13:50
>>143
>>145
あー。オーバーロード絡みだったわけか。完全に勘違いしてた。メソッドオーバーローディング
はScalaみたいな複雑な型システムを持った言語と組み合わさるとかなり厄介だねえ。

149:デフォルトの名無しさん
10/02/26 22:16:50
ほっほー…すげーなScala。
なんかC++の二の舞になりそうな勢いだね。
悪い意味で(´_`)

150:デフォルトの名無しさん
10/02/26 23:34:46
C++は使いこなせてない自分でもScalaは大丈夫だったし、C++程
習得が難しいわけではないと思う。いくつか落とし穴があるのは
事実だが、それほど大した問題ではない場合が多いし。

151:pom
10/02/26 23:49:19
(このあたり、知識がないので大ざっぱな話ですまないが)
Scalaの言語仕様の大きさは、
C++に比肩されるようなものだと思う。
だけれど、Scalaでは
自分(そしてチーム)が面倒見切れる範囲でコードを
書いていけば、そこそこ高い生産性を出せると思う。
自分の指向としては、シンプルな言語を望むところがあるのだけれど、
Scalaに代わりうるほどの生産性を発揮出来そうな言語が
ないのが、ここ2年ほどメインの言語をScalaに切り替えて判明している事実。

>>150
その通りで、慣れれば、落とし穴にはまることは少ない。
全体としてはScalaは素晴らしく練り上げられているよ。
「理想の言語」かはさておき・・・

152:デフォルトの名無しさん
10/02/27 09:53:14
Scala製学習環境Kojo
URLリンク(netbeans.dzone.com)
URLリンク(www.kogics.net)

153:デフォルトの名無しさん
10/02/27 12:19:59
>>151
>シンプルな言語
つClojure

154:デフォルトの名無しさん
10/02/27 18:16:55
>>152
Kojoはやけにロゴがしょぼいのがアレだけど、なかなかよくできている環境だと思う
入力補完にコマンドヒストリ、オブジェクトインスペクタ、タートルグラフィクスに関する
コマンドのUNDOなど機能は豊富だし、割と安定してる。

155:デフォルトの名無しさん
10/03/01 04:03:36
パーサコンビネータを使った言語外DSLの例を載せたサイトとか知ってる人いる?
良くある四則演算DSLとかではなく、変数宣言部があるようなやつが知りたい。どんな感じで作れば良いのか。


156:デフォルトの名無しさん
10/03/01 07:22:28
変数宣言まであったらDSLというより普通に言語なんじゃないの?

157:デフォルトの名無しさん
10/03/01 11:47:22
>>155
変数宣言があっても基本は変わらないと思うよ。普通のパーザジェネレータ使って
オレオレ言語のパーザ書くのと本質的には同じ。また、変数宣言を持った言語の
パーザ書いたことが無いならパーザコンビネータかどうかというのは本質的な問題
じゃない。

158:デフォルトの名無しさん
10/03/03 23:01:46
Option型がよくわからないOption型についておしえてくれ

159:デフォルトの名無しさん
10/03/03 23:20:55
HaskellのMaybeみたいなもん

160:デフォルトの名無しさん
10/03/03 23:52:17
自分はC++の関数戻り値での、参照とポインタの使い分けのようなものだと思ってる。
C++だとnullがありえる戻り値ならポインタを返すけど、それがScalaだとOptionになると。
Optionは便利な関数があるからnullのチェックのif文書くより楽チン

161:デフォルトの名無しさん
10/03/04 02:06:53
Null オブジェクトパターン + パターンマッチ

162:デフォルトの名無しさん
10/03/04 02:16:48
>158
nullチェックし忘れによる、ぬるぽを防ぐ
加えて、Listもどき(長さが0か1のリスト)と見なせる事により、for文やmapで便利
あと、パターンマッチ

でも、Option型使うより、その発展系のBox型の方がより便利で
いいとこが分かりやすい。
あ、Box型ってのは、Liftのライブラリね。
で、Liftの作者がBox型の布教文書を書いてたので、それを読むといい。

163:デフォルトの名無しさん
10/03/06 12:39:27
scala.swing.ListView#listData呼ぶとスタックオーバーフローが起きる。2.8.0Beta1
ソース読んでみたらこんなんなってた。
def length = model.getSize
def iterator = new Iterator[A] {
 var idx = 0
 def next = { idx += 1; apply(idx-1) }
 def hasNext = idx < length
}

Iteratorにlengthメソッドがあるのでそっちが使われちゃって、さらにその中でhasNextを呼んでるから無限ループになってるっぽい?
本家に報告するべきかなと思ったけど、注意書きに
「お前それほんとにバグかどうか確かめたの?お前の勘違いじゃないの?理解できてないだけじゃないの?死ぬの?
 てめぇで判断つかないならMLで相談するなりしてからにしろよ^^;;;;」
って書かれてて心が折れたので誰かエロい人報告しといてくだしあ><

164:デフォルトの名無しさん
10/03/06 16:26:49
日経と工学社から本が出るね。

Cloujerより需要があるのかなあ?

165:デフォルトの名無しさん
10/03/07 03:39:54
ClojureはLispだからなぁ

166:デフォルトの名無しさん
10/03/08 14:29:32
文法にあるTopStatとかのStatって何の略?

167:デフォルトの名無しさん
10/03/09 01:08:55
>>163

注意書きに気にせず報告すると良いと思うよ。
がんばって。



168:デフォルトの名無しさん
10/03/09 02:20:56
(mavenスレで聞いてもscalaのことなど知らんと言われそうなのでこちらで聞きますが)
maven-scala-pluginを使っているのですが、
これって分割コンパイルする方法はないのでしょうか。
*.scala ファイルが25個で、1400行程ですが、
40秒近くかかっています。
mavenに限らずscala一般の話でもわかる方、
いましたらよろしくお願いします。



169:デフォルトの名無しさん
10/03/09 02:24:39
>>168
追記です。
mvn scala:cc
は、やってみました。
レスポンス自体の改善にはならなかったです。

170:デフォルトの名無しさん
10/03/09 03:33:44
>>168
maven-scala-plugin使ったこと無いけど、普通に考えて分割コンパイルされそうなもんだけど…
Liftも以前はmaven使ってたはずだけど、修正のたびに全部再コンパイルだったら使い物に
ならんかっただろうし。まあ、確実に修正差分だけコンパイルして欲しいならsbt(Simple Build Tool)
使うのが無難かなあ。sbtはコンパイラAPI叩いてファイル間の依存性解析とかしてるから、その辺は
割と正確。

171:デフォルトの名無しさん
10/03/09 05:01:40
>>170
sbt 試してみました。
毎回コンパイラを起動しない設定だとかなりのスピードアップがあるようです。
(あわせて169の記述は取り下げます)
(1~3回目というのは、ソースを1行だけ編集してコンパイルさせた結果の3回分です)
またsbtの効果は大ですが、この規模では真価は発揮できないようです。

mvn scala:compile
33s

sbt compile
17s

mvn scala:cc
28s (1回目)
7s (2回目)
5s (3回目)

sbt ~compile
19s (1回目)
8s (2回目)
4s (3回目)


172:デフォルトの名無しさん
10/03/09 05:35:56
scalaのコンパイルしてると、昔、DOSでCを一生懸命コンパイルしてた頃を思い出す。
そんな遅さ。

173:デフォルトの名無しさん
10/03/13 04:20:23
>>156
>>157
返答が遅くてすまんが、レスありがとう。
結局やりたいことはできますた。
結局、自分がパーサコンビネータの使い方が良く分かってなかっただけだった。良く分からないんで手っ取り早く参考となるものがみたかったと、こういうすんぽうです。
適当にいじくってたらだんだん理解してきてなんとかできた。

174:デフォルトの名無しさん
10/03/13 21:53:35
clojure陣営ですけど戦争したいです、DISりたいです

175:デフォルトの名無しさん
10/03/13 23:26:20
ありがちな動的型付け VS. 静的型付けとかだったらどうせ泥沼になるのが
見えてるので勘弁。clojureスレでやってくれ。

176:デフォルトの名無しさん
10/03/13 23:30:55
Clojureスレにも来ないでください

177:デフォルトの名無しさん
10/03/14 23:20:57
それじゃあ新しく出たScala本の書評をたのむ

178:デフォルトの名無しさん
10/03/15 02:56:34
ん?3/18発売のScala入門のこと?

179:デフォルトの名無しさん
10/03/16 23:27:14
Java使わずにScalaでiモードのアプリ作ったり出来ないだろうか

180:デフォルトの名無しさん
10/03/17 15:13:29
SEとCLDCの違いをかなりの手間かけて埋めたとしても
ランタイムのサイズがつらくないか?

181:デフォルトの名無しさん
10/03/17 18:01:38
ProGuard使って要らないクラスファイルをjarから除去すれば、結構小さくなるので
ひょっとしたらそれでなんとかなるかもしれないけど、そこまでする価値があるかどうかだな。

182:デフォルトの名無しさん
10/03/18 01:59:39
>>179
> Java使わずにScalaでiモードのアプリ作ったり出来ないだろうか

Androidは、Scalaでプログラムできるらしいぞ!

今どき、iモードなんて流行らないだろう。Androidで行こうぜ!

183:デフォルトの名無しさん
10/03/18 02:51:37
>>182
そんなことはこのスレの住人なら誰でも知ってるわ。つか公式サイトに載ってることだろ。
大体、iアプリの質問に対してAndroidに話を換えてどうすんだよ。アホにもほどがある。



184:デフォルトの名無しさん
10/03/18 07:54:29
マジレスわろた

185:デフォルトの名無しさん
10/03/19 05:50:50
2.8のAPIドキュメント眺めてたらMutableListの
def union(that: Seq[A]): Seq[A]
というメソッドが3つあったんだけど、おなじのが3つってどういうことだろ。
説明文は全部違うみたいだけど英語だからよくわからん。

186:デフォルトの名無しさん
10/03/19 18:04:19
>>185
恐らく、新しいAPIドキュメントの生成器(scaladoc2)のバグだね
説明文をよく見るとわかるけど、最初の一つがintersect,その次がdiff,最後がunion
の説明になってる。MLかTracで報告してあげると良いのではないかと。

187:デフォルトの名無しさん
10/03/19 18:10:12
ちなみにsは現在けっこう試行錯誤中っぽくて、細かい挙動とか見栄えとかよく変わるので、
その点に注意した方がいいと思う。なんか変な挙動があったらバグの可能性が高い。

188:デフォルトの名無しさん
10/03/19 18:12:07
ミスった。sは→scaladoc2は

189:デフォルトの名無しさん
10/03/20 03:29:24
>>186-188
なるほど、バグか。
ScalaはJavaと比べて複雑だし、大変なんだろうな。
報告は・・・うん、ごめん、ムリぽ
英語ができるなら真っ先にあの検索の挙動について文句を(ry

190:デフォルトの名無しさん
10/03/21 22:34:01
Netbeans 6.8で2.8が使えない
なんとかしてくれ

191:デフォルトの名無しさん
10/03/22 02:58:23
6.8と2.8なら問題なくいけてるけどなぁ。
とりあえずNetBeansをインストールしなおしてみれば?

192:デフォルトの名無しさん
10/03/22 06:01:16
platform-dev - NB6.8 with Scala version 2.8.0.Beta1-prerelease
URLリンク(www.listware.net)

193:デフォルトの名無しさん
10/03/22 10:44:20
scalaの勉強のために、Intellij IDEA入れてみたが中々良いな。
ただ、プラグイン入れてもEmacsライクなSet Markが機能しない。。。
またEclipseに戻りそうだ。

194:デフォルトの名無しさん
10/03/22 23:18:14
scalaすごいわ
数年内にRubyとか淘汰すると思う

195:デフォルトの名無しさん
10/03/22 23:50:30
>>194
Scalaいいよねぇ
Rubyのアホみたいにテスト工数が
ざっくり減るし。


ただ技術者なかなかいないよねぇ


196:デフォルトの名無しさん
10/03/23 21:22:30
おなじJVM上のclojureが攻めてくる・・・わけないなw

197:デフォルトの名無しさん
10/03/23 21:56:00
日本語のlift本でも出ないかな・・・

198:デフォルトの名無しさん
10/03/24 23:35:27

Scala言語を学ぶやさしいツール「Kojo」が無償公開
Publickey URLリンク(www.publickey1.jp)
 

199:デフォルトの名無しさん
10/03/25 00:14:10
apply関数の意味がいまいちわからないのですが
なぜこの関数は存在するのですか?



200:デフォルトの名無しさん
10/03/25 00:46:37
関数適用がapplyの呼び出しになるって点は理解している?

理解しているけど使いどころがわからないってこと?

201:デフォルトの名無しさん
10/03/25 06:58:37
例えばmap関数を自分で実装するのに使う

202:デフォルトの名無しさん
10/03/27 01:12:19
こんなのがあった
Specsみたいな書き方のやり方なんだろうけど、
なにをやってるのかさっぱりわからん(;´Д`)
誰か解説プリーズ。
URLリンク(gist.github.com)

class Example(description: String) {
def in[T](expectations: =>T)(implicit def m: scala.reflect.Manifest[T]): Example = {
if (m.erasure == this.getClass)
hasSubExamples = true

// store expectations for later evaluation
}
}

/**
* This allow me to define in specs examples which know if they have nested examples
* without having to be evaluated
*/

"this example is simple" in { 1 must_== 1 }
"this example has a nested example but it doesn't have to be evaluated to know it!" in {
"I am nested" in { 1 must_== 1 }
}

203:デフォルトの名無しさん
10/03/27 05:27:10
>>202
読んでみた。まず、このサンプルは、inの中にさらにネストしたテストがあるかどうかを
テストフレームワーク側で検知することができることを目的にしている。そのために、
implicit parameterとして渡されたscala.reflect.Manifest[T]からT型のクラスを表すClass
オブジェクトを取得して、this.getClass()、つまりExample classのClassオブジェクトと比較している。
もし、inに渡される引数の型=> Tが => Exampleだったら、ネストしたテストがあるということになり、
hasSubExamples = trueになる。そうでなければネストしたテストは無いということになる。
で、なんでscala.reflect.Manifestを使ってるのかだけど、これは、inに渡される引数の値がnullである場合
でも処理できるようにしているのではないかと思う。そうでなければ、単にexpectation.getClass = this.getClass
で比較すればいいだけだし。

204:デフォルトの名無しさん
10/03/27 08:15:34
scala.reflect.Manifestを使ってるのはexpectationsを評価する前に型を得るためだと思うけど
あと implicit def m: は implicit m: の間違い?

205:デフォルトの名無しさん
10/03/27 19:08:04
>>202 >>203
あー、inがExampleを返すのはネストの判定のためなのか。
ネストならTがExampleになるのね。なるほどなぁ。

206:204
10/03/29 21:07:44
>>204
ああ、そっか。言われて見ればその通り。全然気付かなかった。

207:203
10/03/29 23:06:52
ごめん。名前欄、>>204じゃなくて>>203の間違いだった。

208:デフォルトの名無しさん
10/04/02 16:30:14
AnyVal型の変数にjava.lang.Long型のインスタンスが入ってたらそれをInt型に変換するには
2回asInstanceOfやるしかないんですかね?

val a: AnyVal = 10L
a.asInstanceOf[Long].asInstanceOf[Int]

209:デフォルトの名無しさん
10/04/02 21:01:56
言ってることおかしいな、AnyValじゃなくてAnyRefでした

val a: AnyRef = 10L.asInstanceOf[java.lang.Long]
a.asInstanceOf[Long].asInstanceOf[Int]

210:デフォルトの名無しさん
10/04/05 18:46:05
>>209
val a: AnyRef = 10L.asInstanceOf[java.lang.Long]
a.asInstanceOf[Long].toInt
でOK

211:デフォルトの名無しさん
10/04/05 21:25:39
最近、ImpressのScala本をほけーっと眺めてよさげだなぁとか思ってる初心者なんだけど、
処理系としてはどれくらい安定してる感じなの?

212:デフォルトの名無しさん
10/04/06 00:15:08
>211

何も知らずに言うが、処理系はJVMだから、Javaの10年以上の実績があって超安定。
だが、コンパイルが遅いのが難点ってところ。
コンパイラのバグは、致命的なのはないんじゃないの??

213:デフォルトの名無しさん
10/04/06 19:06:00
>>212
なるほど。それならわりと使えそうな感じだね。

214:デフォルトの名無しさん
10/04/06 20:16:28
型パラメータの条件にこんなコンストラクタ持ってるみたいなのはどう書くんでしょうか
こんなメソッド持ってるみたいなのはこんな感じで書けるみたいですが

def func[T <: {def hoge(s: String): Unit}](value: T, str: String) = {
value.hoge(str)
}

215:デフォルトの名無しさん
10/04/07 02:02:49
>>214
直接的な方法は存在しない。2.7.Xで(実験的な機能として)入った
scala.reflect.Manifestを使えば次のような形で書くことが一応できる

import scala.reflect.Manifest
def fun[T](implicit m: Manifest[T]): T = m.erasure.newInstance.asInstanceOf[T]
fun[String] //String型のオブジェクトを生成

216:デフォルトの名無しさん
10/04/08 00:50:35
何でFile IOとか付いてるんだろう。中途半端に感じるけど、perlとか見たいなのりなのかな?

217:デフォルトの名無しさん
10/04/08 00:50:49
誤爆スマヌ

218:デフォルトの名無しさん
10/04/10 02:27:15
?

219:デフォルトの名無しさん
10/04/13 19:22:38
15,16とScalaDaysなわけだが、
URLリンク(days2010.scala-lang.org)
どれ注目すればいいん?
Running in Browser?Data Parallel Programming?CCSTM?Automatic refactoring?

220:デフォルトの名無しさん
10/04/15 00:21:49
d(x:Int)(y:Int)(z:Int): Int = x + y + z

ってどこまでが引数でどこまでが返り値でどこまでが
関数の実体なのでしょうか

221:136
10/04/15 13:15:05
scalaでunit testってある?

222:デフォルトの名無しさん
10/04/15 13:15:13
Scala 2.8.0 RC1

223:デフォルトの名無しさん
10/04/15 16:58:57
>>221
コップ本で1章使って概説してるよ

224:デフォルトの名無しさん
10/04/15 19:27:01
便乗して、ScalaのテストはSpecsとScalaTestのどっちがおすすめ?
ちょっと見たかんじだと、なんかあまり違いがないような

225:デフォルトの名無しさん
10/04/17 12:55:43
「Scalaのサイトに載せたいから、Scalaユーザグループは
メールでPhil Bagwellにグループの詳細を送ってくれ」
だって。

226:デフォルトの名無しさん
10/04/17 14:24:24
仮のロードマップ

・Scala 2.9 (late 2010)
parallel collections, more specialization, faster vector & hash tries
Dynamic type (?), Scala reflection (?), Scala IO (?), more libraries

・Scala 2.10 (2011)
Reactive programming, optional exception checking,
first parallel DSLs, Scala .NET, more libraries

・Scala 2.11/3.0? (2012-2015)
Optimizing parallel DSL framework, contracts (?),
generalized effect checking, type debugging

227:デフォルトの名無しさん
10/04/17 14:41:09
@jorgescalaのtweetから

Scala 3.0 could include:
unification of tuples + function args, better type inference, union types

Virtual classes still on the "research" roadmap, but has no owner

Multimethods: definitely a research project.
Unlikely to happen, unless someone implements it and nothing breaks.

あとScala Foundationを設立して企業からもサポートもらうよ、
次回のScalaDays2011はサンフランシスコでやるよ、とのこと。

228:デフォルトの名無しさん
10/04/17 14:49:09
>226
.NET版をまだ諦めてなかった事に驚いた。
あと、例外チェックも。

229:デフォルトの名無しさん
10/04/17 16:13:11
>>228
.NETはMSが(VSの?)scalacモジュール出すらしい

230:デフォルトの名無しさん
10/04/17 19:59:01
>>229
> .NETはMSが(VSの?)scalacモジュール出すらしい

Scala終了か?

MSがやると互換性の違うのがいっぱいできて、利用者側が混乱するんだよね。。
MSの作戦でやっているのだろうけど。

Java,Html, 他にも、MSが下手に乗り出すことで、進化が遅くなった言語がいろいろ。。



231:デフォルトの名無しさん
10/04/17 20:24:04
>>230
わざと1980年代から意図的に同じ事くりかえして
自社の優位性を保とうとしているからなぁw

232:デフォルトの名無しさん
10/04/17 21:10:35
お前ら偏見持ちすぎだ。

似たケースとしてIronRubyを挙げるが、こっちは変な独自要素はないよ。
WPFなどの.NET API呼び出しが、独自要素だと言えばその通りだが、
それ言ったらJRubyやJythonのJava連携はどうなる、とかいった話になるし、
問題視している奴らはいないだろう。

というか、そんな余計なことに手を出す余裕がない。
ようやくRuby1.8準拠のIronRuby1.0がリリースできたところで、
次はRuby1.9準拠の1.1のリリースが待っている。

Scalaが、ブラウザや往時のJava並みの戦略的プラットフォームだとMSが判断したら、
大量の資金がつぎ込まれてMSの独自要素が作られるかもしれないが、
今の状況を見てそこまでScalaが流行ると思うなら、お前ら幸せすぎだろw

233:デフォルトの名無しさん
10/04/17 21:42:14
IronRubyは対応したばっかりだからこれからおかしくなるんだろ

234:デフォルトの名無しさん
10/04/17 21:50:47
IronRubyってMSの息がかかってるの?

235:デフォルトの名無しさん
10/04/17 22:08:56
そもそもMSが開発してるので

236:デフォルトの名無しさん
10/04/17 22:49:55
>>232
同意見だなぁ
.netなんだし間口広げるだけだろうにな・・・

237:デフォルトの名無しさん
10/04/17 23:41:41
しかしJavaは改悪された

238:デフォルトの名無しさん
10/04/18 01:14:52
今のMicrosoftのプログラミング言語とその周辺に対する取り組み方を知っていて
それでもなお独自拡張を恐れるならともかく、古い情報に基づいての偏見はなぁ…

239:デフォルトの名無しさん
10/04/18 02:04:22
三つ子の魂百までって言うからね
悪いことはするなって事だよ

240:デフォルトの名無しさん
10/04/18 02:09:51
>>238
結局、MS製品のある環境でしか動かないものしか作ってないからな。
建前は標準規格と言ってるが。

241:デフォルトの名無しさん
10/04/18 02:18:33
そりゃ慈善事業じゃないんだからメリットないことはしないだろ?
標準規格にはこだわるにしても

242:デフォルトの名無しさん
10/04/18 02:31:03
もちろんそうだ。
要は、ベンダーロックインされるリスクを負ってでも、その技術を使いたいかという話。

243:デフォルトの名無しさん
10/04/18 03:00:51
.Net版scalacは既にあってそれに対するモジュールだろうになんでこんな流れなんだ(;´Д`)
MSの部分だけに反応するってことはscalaに興味ない人が荒らすためだけに巡回してるのかな・・

244:242
10/04/18 03:54:57
俺は>>230とは違う人間だよ。俺はMSを過剰に非難するつもりはないが、
歪んだ形の囲い込みを全く警戒しなくてもおk、というわけではないという当たり前の話。

245:デフォルトの名無しさん
10/04/18 03:58:32
>>241
いやメジャーOSだとそんなことやってるのWindowsだけだよ…

246:デフォルトの名無しさん
10/04/18 09:29:46
別にロックインされないだろ。
便利な技術ならOSSでコピッて本家に取り込まれるし、
使えない技術ならそもそも.NET版でも使われなくて、MSの優位性が無くなる。
JavaScriptのXHRなんか、ActiveXベースでMS独自実装の最たるものだが、
標準に取り込まれて、今じゃAjaxの最重要技術だ。

J++を念頭に言っているのなら、あれはSunが相手だからああいう裁判沙汰になっただけで、
もっと緩やかな相手なら、ああはならず、J/DirectやCOM連携が、
他の処理系への移植を考慮した形で取り込まれていたと思う。
実際、J++でやろうとしていたことの必要性は確かにあり、その後OSSベースで実装されている。
JNIが不便だからと言って作られたJNAはNetBeansが由来だし、
いくつかあるJava-COMブリッジとか、OSSで作られてるだろ?

247:デフォルトの名無しさん
10/04/18 10:10:09
結局違法にJAVA改悪したから
Win2000発売停止になったよな

じゃあScalaもきちんと監視しないと
改悪されるぞ

248:デフォルトの名無しさん
10/04/18 12:51:02
MS を脅かすほど Scala に影響力はないから大丈夫だよ。

249:デフォルトの名無しさん
10/04/18 12:53:08
>>246
> 便利な技術ならOSSでコピッて本家に取り込まれるし、

世の中には特許というものがあってだね。

250:デフォルトの名無しさん
10/04/18 16:19:28
完全互換になんてなる訳ないじゃん
Ironなんちゃらシリーズだって.netでしか動かない仕様になるぜ

251:デフォルトの名無しさん
10/04/18 17:10:06
完全じゃなくても98%ぐらい互換ならいいよ

252:デフォルトの名無しさん
10/04/20 21:14:19
そんなことより、Scalaの話をしようぜ!

>「Scala 2.8.0」がRC1に
>2010年04月16日 23:39
>プログラミング言語「Scala」の開発チームは4月14日、次期版「Scala 2.8.0」のリリース候補(RC)版を公開した

続きは、こちらでも、どこでも。。。
URLリンク(sourceforge.jp)


個人的には、Scala Swingライブラリに期待。
Visualな Swing開発環境が出てくれるとうれしいのだが。


253:デフォルトの名無しさん
10/04/20 21:30:32
SwingをScalaでやるメリットってなんかあんの?
完結になるかどうかはSwingのAPI次第だからScala関係なくね?
NetBeansでもう完成形でいいじゃん

254:デフォルトの名無しさん
10/04/20 21:31:13
×完結
○簡潔

255:デフォルトの名無しさん
10/04/20 22:25:25
ScalaとRubyだと、Scalaが秀でているところってどういうところ?

256:デフォルトの名無しさん
10/04/20 22:30:51
速い

257:デフォルトの名無しさん
10/04/20 22:39:05
実行速度が速い、強い型付けがあるってとこかな

258:デフォルトの名無しさん
10/04/20 23:03:16
>>252
ScalaでFRPとかできるようにならんのかな。それとももうある?

259:デフォルトの名無しさん
10/04/20 23:26:07
なるほど速度ですか

関数型言語=マルチコアに対応したプログラムができる
というのはScalaの場合当てはまりませんか?(もしくはRubyもそういうのを作れる?)


260:デフォルトの名無しさん
10/04/21 00:28:41
マルチコアに対応したプログラムなんてPerlでも書けるだろ
もちろんRubyでも

261:デフォルトの名無しさん
10/04/21 02:18:40
Rubyと比べられるべきなのはScalaよりむしろGroovyだと思う。

>>259
マルチコア対応が容易、って不変性がどうとかっていう部分じゃないんですかね。
ということは純粋関数型っぽく作れば良いと思うんですけど。

262:デフォルトの名無しさん
10/04/21 03:10:43
>>253
JavaFXみたく宣言っぽく書ける
イベントハンドラが柔軟に書ける
ただ現状ラッパとしての完成度が低い

GUIは他の部分よりも恩恵を受けれないのはしょうがないね
特にラッパだと元ライブラリの制限を受けまくるし

ちょっとしたグラフのプロットとかをREPL上で
さくっと書けるのは楽しいよ

263:デフォルトの名無しさん
10/04/21 08:02:54
>>225
これか
URLリンク(www.scala-tribes.org)

264:デフォルトの名無しさん
10/04/21 09:33:01
>>259
Haskellの場合純粋な部分と非純粋な部分を分けて書かざるを得ないけど、
そのお陰でコンパイラが普通のコードを自動的にマルチコア最適化するなんてこともできる(ようになる)らしい

Scalaの場合varとvalの使い分けはあるものの、Haskellよりは弱い最適化しかできないかと

265:デフォルトの名無しさん
10/04/21 12:44:25
『Scalaプログラミング入門』って本どう?

尼で目次見た限りでは地雷くさいんだが・・・

266:デフォルトの名無しさん
10/04/21 13:18:52
mutableなスタックとimmutableなスタックで初期化した時の順番がアレなんだがこんなもんなの?
2.8RCで試しました

scala> val s1 = scala.collection.immutable.Stack(1,2,3)
s1: scala.collection.immutable.Stack[Int] = Stack(1, 2, 3)

scala> val s2 = scala.collection.mutable.Stack(1,2,3)
s2: scala.collection.mutable.Stack[Int] = Stack(3, 2, 1)

scala> s1 top
res35: Int = 1

scala> s2 top
res36: Int = 3

267:デフォルトの名無しさん
10/04/21 19:22:35
>>265
Scalaスケーラブルプログラミング
URLリンク(www.amazon.co.jp)
Scalaプログラミング入門
URLリンク(www.amazon.co.jp)
両方買ってどちらも最後まで読んでないですけど。

『Scalaプログラミング入門』は言語仕様の説明がほとんどなくて
初っ端からScala特有の(=Javaの概念にはない)話が進んでいくので
実行環境のそばで読まないとさっぱり理解できない。
実行してもなんでそうなるのか分からないので応用きかない。

なので初めの1冊どっちを買うかと問われれば
間違いなく『Scalaスケーラブルプログラミング』。
Scala経験者が読んだらまた異なる感想になるかもしれませんが、
「入門」を冠する書籍としては問題あるんじゃないかなあ、と。

268:デフォルトの名無しさん
10/04/21 20:10:02
普通のプログラマに必要なレベルの話はどっちにも乗ってるだろ
それとも関数型言語と言うものを全く知らないと言うことか?

269:デフォルトの名無しさん
10/04/21 20:51:23
>>262

> ちょっとしたグラフのプロットとかをREPL上で
> さくっと書けるのは楽しいよ


そういう用途では、Scalalab(ScalaSci ) に期待しているのだが、、、まだまだかなあ。。

270:デフォルトの名無しさん
10/04/22 06:26:03
簡単にグラフってどうやるですか?
awtとかswingつかうの?

271:デフォルトの名無しさん
10/04/23 05:52:53
EclipseのScalaプラグインがScalaで書かれていることにちょっとびっくりした。

272:デフォルトの名無しさん
10/04/23 07:50:25
>>267
どうせまた、なんにでも「入門」ってつけちゃう日本語書籍の悪いところだろ…
と思って原著のタイトル調べてみたら「Beginning Scala」でしたごめんなさい

273:デフォルトの名無しさん
10/04/23 22:25:35
ScalaってJavaで書かれてるのか?
JavaはJavaで書かれているのか?
Javaを書いてるJavaはなにで書かれているんだ?

274:デフォルトの名無しさん
10/04/23 23:18:27
>>271
だからあんな糞の役にも立たない糞プラグインなのか
IntelliJのScalaプラグインの方が遥かにいいわ

275:デフォルトの名無しさん
10/04/23 23:57:38
Intellijって、なんかビルドが遅い気がする。
EclipseはXMLを記述するとエラーになるんだよな。

276:デフォルトの名無しさん
10/04/24 00:00:49
Liftっていいのつかってみたけど
難しすぎて使えない

277:デフォルトの名無しさん
10/04/24 01:01:01
JavaVM必須とか、クソすぎる。

278:デフォルトの名無しさん
10/04/24 01:18:01
IntelliJは重いしUIが微妙なんでやめた
やっぱEclipseかNetBeansになっちゃうな

279:デフォルトの名無しさん
10/04/24 03:48:35
receiveとreactの使い分けが分からん…
いつもreact+loopで良いような。
receive使うのはどんな時だろう。

280:デフォルトの名無しさん
10/04/24 04:25:14
>>270
import swing._
def point = (util.Random.nextDouble -> util.Random.nextDouble)
def data = Stream.continually(point).take(1000).toList
new Frame {
contents = new BorderPanel {
preferredSize = new Dimension(300, 300)
def scale(d: Double) = (d * 300).toInt
override def paintComponent(g:Graphics2D) {
data.foreach(p => g.fillRect(scale(p._1), scale(p._2), 1, 1))
}
}
visible = true
}

281:デフォルトの名無しさん
10/04/25 11:30:17
環境 scala2.7.7 eclipseのプラグイン

メソッド内でmutablueなMapでデータを作成、編集して、immutableにして返したいから、
メソッドの戻り値の型自体はMapで宣言しておき、最後にreadOnlyってメソッドよんで返すと、

type mismatch; found : scala.collection.Map required: Map
(scala.collection.Mapをかえしてるけど、このメソッドではMapを返すって宣言してるから型違うよ)

っておこられるんだが・・・

Predefの中で

type Map[A, +B] = collection.immutable.Map[A, B]

って宣言してて、collectionのMapってimmutableのMapのことだから結局おなじじゃないのか?

Predefと同じtypeの宣言をそのメソッドのクラス内に書けばエラーでないがこういうモノなのか?

なんだが微妙に冗長になって気にくわないんだが・・・

なんかいい方法あったら教えてくれ

そもそもScala2.8だと違うのか?
eclipseが悪いのか?
効率なんか考えないで最初からimmutableなMapで作成すればいいのか?

Listとかでも同じ問題がおきると思うんだが・・・

282:デフォルトの名無しさん
10/04/25 11:58:25
>>281
別名importで解決できない?

283:デフォルトの名無しさん
10/04/25 12:14:29
>>281
そうじゃない。scala.collection.Mapという型が
scala.collection.immutable.Mapという型と別に存在してて、コンパイラは
scala.collection.immutable.Mapが期待されてるのに、scala.collection.Mapが返されてると
文句言ってるわけだ(scala.collection.Mapはscala.collection.immutable.Mapとscala.collection.mutable.Map
の共通の親trait)。
で、なんでscala.collection.mutable.MapのreadOnlyがscala.collection.immutable.Mapじゃなくて
scala.collection.Mapを返すかというと、APIドキュメント
> Return a read-only projection of this map
に書かれてる通り、mutableなMapの「読み取り専用」なviewを返したいからだと思われ。
scala.collection.immutable.Mapだと「不変」Mapになっちゃうので。

ちなみに、2.8でお望みの事をしたいなら、toMap使えばscala.collection.immutable.Mapを返して
くれる。2.7だとちょっと冗長になるけど、Map(m.toSeq:_*)でいけるかな。

284:デフォルトの名無しさん
10/04/25 12:50:00
>>280
やっぱswingつかうんね
サンキュー

285:デフォルトの名無しさん
10/04/25 13:33:19
swingとか遅くて使い物にならんだろw


286:デフォルトの名無しさん
10/04/25 14:18:11
クマー

287:デフォルトの名無しさん
10/04/25 14:23:12
専ブラとしてV2Cを愛用している俺に
swingの悪口は止めてもらおう

288:デフォルトの名無しさん
10/04/25 14:40:04
>>287
同じくV2Cを愛用している。最近のバージョンのJavaだと
起動してからは、そんなにもたつきは感じないなーというのが正直なところ。
あと、起動速度もだいぶ早くなったし。

289:デフォルトの名無しさん
10/04/25 14:56:13
>>288
たまに貼ってあるanimated gifとか見ると真っ黒に表示されること無い?

あれって、Javaの問題なんだろうか。元ファイルをブラウザで見ると普通なんだが。ってscalaの話じゃないか

290:デフォルトの名無しさん
10/04/25 14:59:17
アニメGIFがおかしくなるバグは既知の問題で、未だ原因不明
まあそろそろスレチだが

291:デフォルトの名無しさん
10/04/25 15:21:43
んじゃscalaで2chブラウザ作ってみるか

292:デフォルトの名無しさん
10/04/25 18:48:43
>>285
我慢するのは実行時コンパイルが済むまでの間だよ。

293:デフォルトの名無しさん
10/04/25 18:49:48
>>291
作ったとして、Java直接と比べてどんなメリットが考えられるのだろうか?

294:デフォルトの名無しさん
10/04/25 19:22:36
作る奴が関数言語得意なら楽に作れる

295:デフォルトの名無しさん
10/04/25 19:38:04
それは作る時の話じゃん。アウトプットに関してはどうなのよ…って変わらんか、そりゃw

296:デフォルトの名無しさん
10/04/25 19:44:15
そんなもん、C言語とマシン語だって同じ話だろ?

297:デフォルトの名無しさん
10/04/25 21:51:51
そりゃ違うでしょw

298:デフォルトの名無しさん
10/04/25 21:54:06
GW中にScalaマスターしたいのですが
どこから始めればいいのですか?

299:デフォルトの名無しさん
10/04/25 21:54:56
>>281-283 見てviewメソッドの意味が初めてわかった。
immutableばかり使ってたんで、気づかなかったわ。
val m = collection.immutable.Map(1->2, 3->4)
val v = m.view
v foreach println
// (1, 2) (3, 4)
m += 5 -> 6
v foreach println
// (1, 2) (3, 4) (5, 6)
いいね、これ

300:デフォルトの名無しさん
10/04/25 21:56:08
まちがえた。
>>299はcollection.mutable.Mpa(1->2, 3->4)

301:デフォルトの名無しさん
10/04/27 23:21:09
>>298
> GW中にScalaマスターしたいのですが
> どこから始めればいいのですか?

ScalaWikiから。

本は、通称コップ本が良い。

302:デフォルトの名無しさん
10/04/28 01:33:19
operaだとscaladoc2メッチャ遅くない?

303:デフォルトの名無しさん
10/04/28 01:39:16
>266
なんかきもいな
immutable.Stackは1,2,3で初期化されたStackを生成する
mutable.Stackは空のStackを生成して1,2,3の順で追加したものを返す
ってことか
どっちかに統一すればいいのに

304:デフォルトの名無しさん
10/04/28 02:08:17
ガチガチに縛られた言語が好きならPythonでも使えば?

305:デフォルトの名無しさん
10/04/28 04:54:56
>>302
Opera,Chrome,IEで比べたけどOperaが特に遅いとは思わなかったな
scaladoc2がそもそも重いつくりだしなぁ

306:デフォルトの名無しさん
10/04/28 22:40:47
>>305
どうも、うちの環境が悪いのかなーと思ってプロファイル削除してみたらだいぶましになった
>>303
たしかにどっちでもいいけどどっちかに合わせて欲しいね、mutableからimmutableにリファクタするとかなったときこの挙動知らなかったらあれ?ってなるかも

307:デフォルトの名無しさん
10/04/29 00:43:50
初心者には入門本よりコップ本がオススメなのか

今日ホッテントリ入りしてたScala記事に影響されて入門本買うどころだったが、買う前にこのスレ見てよかった

ちなみにコップ本は2009年の本だけど、Scalaのバージョンはいくつで書かれてる?2.7.7かな

308:デフォルトの名無しさん
10/04/29 02:43:25
Summer of Code Scala Project
URLリンク(www.scala-lang.org)

・Scalable Remote Actors
serializationとブロックIOの機能を持つリモートアクタの開発
・ENSIME, a new Scala development environment for Emacs
Emacsに型チェックやインスペクションの機能をつける
・Lift and SBT template engine
SBTのプロジェクトテンプレートエンジンとLiftプロジェクトテンプレート
・Hardware Accelerated 2D Graphics
JOGLなどのシェーダをJava2Dとして扱うためのAPI
・Adding LINQ-awareness to Scala.Net
通常のメソッド呼び出しとしてLINQを実装、SQOを分かりやすい形式にする
・Advanced Semantic Tools for the Scala IDE for Eclipse
インラインでの、コードの折りたたみ表示のような方法による、推論された型やimplicitなどの視覚化
・Collaborative Scaladoc
wikiのようなAPIドキュメントの共同編集環境の構築と、このやり方によるAPIドキュメント製作で発生しうる問題の調査

309:デフォルトの名無しさん
10/04/29 02:43:46
>>307

その入門本ってどの本のこといってる?

タイトルに入門とかついている本だったら買うだけ金の無駄だと思うよ。


310:デフォルトの名無しさん
10/04/29 03:35:24
公式の右下にある投票、あれなんだ?

311:デフォルトの名無しさん
10/04/29 03:55:14
入門disってる奴は通ぶりたいだけだろ
言語仕様の中身まで書いてない本はクソ扱いしたいガキ

312:デフォルトの名無しさん
10/04/29 07:33:42
いや、Scalaはコップ本を読んで理解できないようなやつが使うべきではないということだよ
ちゃんとJavaから勉強してきてねっ感じの言語
それにコップ本はそんなに難しいわけじゃない

313:デフォルトの名無しさん
10/04/29 08:11:31
>>309
Sの文字が2つならんでる表紙のやつ

URLリンク(wota.jp)

314:デフォルトの名無しさん
10/04/29 10:22:13
>>311
チュートリアル的な面でみてもコップ本の方が優れてると思うけど。
初学者から見て入門本の方が優れてるところってどこよ?

315:デフォルトの名無しさん
10/04/29 10:44:42
勝手に言語のハードル上げる奴は馬鹿


316:デフォルトの名無しさん
10/04/29 11:00:55
プログラミング言語C++みたいな
レベルの本じゃないと意味がない

317:デフォルトの名無しさん
10/04/29 11:11:02
自称玄人のお前らより、Amazonのレビューの方が参考になる。
この時点でこのスレにいる奴は初学者じゃなくて、言語マニアだから
初心者が何を読めばとりあえず使えるようになるか解らなくなっている。

318:デフォルトの名無しさん
10/04/29 11:14:11
初心者の視点になるのって難しいよね
いつも痛感してるわ

319:デフォルトの名無しさん
10/04/29 11:14:22
>>317
初心者に情報を与えるのは
Java厨、Ruby厨、カスPHP野郎
みたいなのを量産するだけだからやめろ

320:デフォルトの名無しさん
10/04/29 11:24:35
>>317
上のほうでAmazonレビューで工作してた入門本の作者が晒されてたけど、
まさかお前じゃないだろうな?

321:デフォルトの名無しさん
10/04/29 11:27:10
そこまで否定するってことはむしろお前が…

322:デフォルトの名無しさん
10/04/29 11:46:25
え、現状和書で買う価値があるのはコップ本と>>313の入門本の2つだけだよな

それ以外がゴミなのはどちらも認めてるんじょないか


323:デフォルトの名無しさん
10/04/29 11:54:24
>>313

あ、これ(Scalaプログラミング入門)も入門てついてたんだっけ。
こっちは悪くないと思うよ。

コップ本と比べてどうとかはよくわからないけど。


324:デフォルトの名無しさん
10/04/29 12:25:22
プログラマともあろうものが前提条件を決めないで入門書はカスとぶったぎるのはゆゆしき問題だな

325:デフォルトの名無しさん
10/04/29 12:35:18
こっちはなんて呼べばいいんだろ?
SS本?w

326:デフォルトの名無しさん
10/04/29 12:43:12
LiftのDavid Pollakが書いた本の訳だよね>Scalaプログラミング入門
説明にややはしょり気味なところが見受けられるけど、Scalaにおけるイディオムなど、
コップ本より実践的な内容にフォーカスしてて良い本だと思う。

327:デフォルトの名無しさん
10/04/29 12:46:01
David Pollakの本は文才がないっつーか
ありゃダメだな

あれはチラ裏の日記だな

328:デフォルトの名無しさん
10/04/29 13:37:04
うーん。そうか。あの大げさ極まりない書き方はあまり好みじゃないけど
実際にScalaでよく使うイディオムなんかにも触れてあって、結構良い本だと
思ったのだが。>David Pollakの本

329:デフォルトの名無しさん
10/04/29 14:40:20
これからは
・コップ本
・入門
・工作本
って呼べばいいだろ

330:デフォルトの名無しさん
10/04/29 14:48:55
日本人はLispがあるから
へんな関数型言語布教させるんじゃねーよ



331:デフォルトの名無しさん
10/04/29 14:57:11
へんな関数型言語…
Schemeのことか?

332:デフォルトの名無しさん
10/04/29 15:24:11
David Pollakの文章は、なんかアジっぽい。

333:デフォルトの名無しさん
10/04/29 15:27:37
コップ本は、後半急激に難易度が上がるというレビューが多いね
SS本は、既に他言語を学んでる(特にJava)ことが前提な内容みたいだね

関数型は始めてだけど、他の言語入門済みの場合はどっちがいいのかな~

334:デフォルトの名無しさん
10/04/29 15:28:46
SS買って一通り覚えたらコップでよくね?

335:デフォルトの名無しさん
10/04/29 15:35:41
>>332
それは同意。ああいうアジり気味の書き方って内容に厳密さを求める向きには
受け入れられづらいと思うのだが、どうなんだろうねえ。

336:デフォルトの名無しさん
10/04/29 15:35:45
David Pollakの本は、リファレンス本的には全然使えないけど、
通しで読んで、Scalaのノリをつかむにはいい本だと思うよ。

敢えて言えば、コップ本こそ、公式サイトの情報とネットの情報でまかなえるから
買わなくていいと言える。

337:デフォルトの名無しさん
10/04/29 15:48:24
Rubyのどの本よりもアジってないから問題ないよ

338:デフォルトの名無しさん
10/04/29 16:11:46
>>334
アジるって煽るって意味なのか

339:デフォルトの名無しさん
10/04/29 19:22:51
プログラミング初心者じゃないけど Scala は少しハードルが高く感じる
関数型言語は Lisp とか Scheme とか使ってたんで抵抗は無いけど、
それでも記法がちょっと独特で迷う

340:デフォルトの名無しさん
10/04/29 20:06:48
はっきりいって文法がきもい

341:デフォルトの名無しさん
10/04/29 21:44:17
まぁ素のJavaよりはマシだけどそれだけなんだよな

342:デフォルトの名無しさん
10/04/29 21:49:41
文法のキモくないプログラミング言語とは何だったのか。

343:デフォルトの名無しさん
10/04/29 22:40:13
ここら辺に日本語記事一覧がある
URLリンク(sites.google.com)
URLリンク(diaspar.jp)

英語なら、何冊かネットで読める草稿があるぞ
URLリンク(programming-scala.labs.oreilly.com)
URLリンク(groups.google.com)

Programming in Scala(Scalaスケーラブルプログラミング)の元になった感じの内容のもある。
Scala By Example

URLリンク(www.scala-lang.org)

対応バージョンが2.7より古いかもしれないけど、一番上の中に和訳もある
・Scala By Example 和訳
・チュートリアル A Scala Tutorial for Java Programer 和訳

344:デフォルトの名無しさん
10/04/29 22:59:08
>>340
とりあえず、>>340は文法がきもくないと思う言語を挙げてみてくれ
主観できもいとだけ言われても、どういう美的感覚持ってるのかがわからんと
ピンと来ない

345:デフォルトの名無しさん
10/04/30 00:12:59
そういうのはかまうなよ
ログ見りゃわかるが、粘着してるやつがいるんだよ

346:デフォルトの名無しさん
10/04/30 06:13:41
LLVM向けJVMとCLIのVMの実装をするそうな。
URLリンク(vmkit.llvm.org)

347:デフォルトの名無しさん
10/04/30 15:00:21
>>344
340ではないが、型を名前の後に置くこと(i:int, s:String) に馴染めない。
これを int i, String s と書けるようにするだけで、だいぶ違うだろ。


348:デフォルトの名無しさん
10/04/30 15:33:34
IDE使うの大前提だと後置式のがいい。

349:デフォルトの名無しさん
10/04/30 18:29:03
>>347
それは、そうした方がJavaから移行したユーザが馴染みやすいって意味だよね
それはその通りだと思う。

ただ、Scalaの場合変数の型を省略できる、というか省略するのが普通なのでその点は
考えなければいけないと思う。もし、Java式の型宣言にするなら、型を省略したときは、
別途val x = 3とかvar x = 3みたいにしなければいけなくなって、構文的な整合性の観点
からはあまり良くない。C#は型宣言を省略する場合はvarと書くという方式だけど、あれは
後付けだから仕方ないのであって、新しく言語作るときにああするのはどうかねえ…

350:デフォルトの名無しさん
10/04/30 18:39:09
構文的には後置のほうが混乱が少ないと思う
それに関数型言語は後置にするのが多いからね
まあ、慣れの問題だね

351:デフォルトの名無しさん
10/04/30 20:21:44
慣れの問題と思うけど、単純に Scala のコードは読みにくい

352:デフォルトの名無しさん
10/04/30 20:30:16
型が前置じゃなきゃ嫌だってのは、
つまりC系統の言語しか触ってないってことだからね
もっといろんな言語に触れたほうがいいと思うよ

353:デフォルトの名無しさん
10/04/30 20:40:33
型情報を明示しないって思想だから後ろに来るのは当然だと思うけどな。

つか、そうしないと文法的整合性が取りにくい

354:デフォルトの名無しさん
10/04/30 21:20:47
C++も設計でscalaと同じ書き方を検討してたんだよ
Cとの整合性をとって採用されなかったけど

355:デフォルトの名無しさん
10/04/30 21:56:16
そしてObjectiv-Cみたいな意味不明なのができる

356:デフォルトの名無しさん
10/04/30 22:51:07
前置にするとvarとvalの区別が面倒になる。Javaみたくfinalだらけになるのはイヤだ。

357:デフォルトの名無しさん
10/04/30 23:18:53
Groovyがそんな感じだね。

358:デフォルトの名無しさん
10/04/30 23:42:15
後ろ置きは、慣れの問題でなんとかなりそうな気がする。ていうか、慣れれば、結構好きかも。

でも、アンダースコア _ は、どうかなあ。。。

( _ > _) とか書いていると、顔文字に見えてくるんだよね。

359:デフォルトの名無しさん
10/05/01 00:23:16
ScalaにはRubyのERBみたいな機能がないから
ゴミだな

360:デフォルトの名無しさん
10/05/01 00:38:54
釣られない…釣られないぞ…!

361:デフォルトの名無しさん
10/05/01 01:41:26
最近のはやりは後置だな
golangもやはり後

362:デフォルトの名無しさん
10/05/01 01:59:45
上の方で書かれている理由に加えて、後置(+キーワードを先置く形式)にするとちょっと
構文解析が楽になるというのもあるかも(これはそれほど重要じゃないだろうけど)。

363:デフォルトの名無しさん
10/05/01 02:33:06
pascal出身としては安心するなぁ

364:デフォルトの名無しさん
10/05/01 03:20:38
1ヶ月もすれば、どうでも良くなってくるよ。
くだらない。

365:デフォルトの名無しさん
10/05/01 07:59:34
最近の若い子はPascalなんて知らないんだろうな

366:デフォルトの名無しさん
10/05/01 08:56:55
ScalaDays2010の全講演のビデオ来てますよー
URLリンク(days2010.scala-lang.org)

英語わかんなくても結構面白い
コーラのボトル持ってしゃべる人が居たりw

367:デフォルトの名無しさん
10/05/01 11:36:34
>>366
グッジョブ

368:デフォルトの名無しさん
10/05/01 11:51:38
>>366
さっぱりわからんけど、(Scala界隈の)有名人がでてるやつとか、面白い内容のおすすめなのとかある?

369:デフォルトの名無しさん
10/05/01 12:51:54
>>368
とりあえず個人的なお勧めは、Oderskey先生のOpening Talkと
Named And Default Arguments, それとSneaking Scala Into Your Organization
辺りかな。Odersky先生以外のScala界隈の有名人と言ったらDavid Pollakとかだけど
彼は発表してなかったなー。あと、IntelliJの人のScalaのリファクタリング機能に関する
発表とかも面白かった

370:デフォルトの名無しさん
10/05/01 12:52:54
しまった。Oderskey→Odersky。間違えるなんてorz

371:デフォルトの名無しさん
10/05/01 12:53:16
えいごが解らん
なんとかしてくれ

372:デフォルトの名無しさん
10/05/01 13:28:01
長すぎてワロタ

373:デフォルトの名無しさん
10/05/01 20:01:48
Microsoft が F# や Axum の他にも IronScala を作ればメジャーになれる可能性は高い

374:デフォルトの名無しさん
10/05/01 20:26:20
>>373
IronScalaというか現在のScalaの.NET版実装もMSの協力があったとかそんなのを
読んだ覚えが…。現在のScala.NET実装は.NETのジェネリクスに非対応だったりして
実用に使うのは厳しいが。

375:デフォルトの名無しさん
10/05/01 20:30:45
Scalaのジェネリクスは、Javaのerasureに合わせたヘタレ仕様のままなの?
この先もずっと?

376:デフォルトの名無しさん
10/05/01 21:13:19
>>375
Javaのerasureに合わせるというのは崩せないだろ
もしそれやったら現在のScalaユーザの大部分を失う危険性がある一方で
それで取り込めるユーザがどれだけ居るか…
それに、ScalaのジェネリクスはJavaのそれに比べてかなり強化されてるから
erasureベースでもJavaに比べればだいぶ不満は感じにくくなってるよ

377:デフォルトの名無しさん
10/05/01 21:41:36
>376
Boxの中身をパターンマッチングさせようとすると、出来なくてイライラする。

378:デフォルトの名無しさん
10/05/01 21:49:32
今の時代
ネイティブで動かない言語なんてゴミだろ

379:デフォルトの名無しさん
10/05/01 21:55:58
.netのscalaもerasureなのん?

380:デフォルトの名無しさん
10/05/01 22:01:46
君の言うネイティブで動くって言うのはどういうことかね?

381:デフォルトの名無しさん
10/05/01 23:10:58
>>378

今の時代?

昔の時代だったら、確かに遅くてゴミだったけど、
今の時代だとそんなに気にならない。


382:デフォルトの名無しさん
10/05/01 23:13:07
遅くてもいいってのはシステムはだいたいI/Oネックだからであって
SSDとか使っちゃうと言語自体の速度が影響する割合がでかくなる

383:デフォルトの名無しさん
10/05/01 23:30:04
今勉強でpredef眺めてたらこの関数
def readLine(text: String, args: Any*) = Console.readLine(text, args)

def readLine(text: String, args: Any*) = Console.readLine(text, args: _*)
の間違いだと思うんだだれかバグ報告しといて俺英語できない

384:デフォルトの名無しさん
10/05/02 00:13:24
確かに、それなんかおかしいな
まだPredefにバグ残ってんのか?

385:デフォルトの名無しさん
10/05/02 00:18:19
やべぇ、日本人で発表してる人がいるんじゃん > Scala Days
英語がたどたどしいけど、それにしてもすげぇな

386:デフォルトの名無しさん
10/05/02 01:30:04
>>385
たぶんツイッターにいてtsudaってくれてたひとじゃないかな?
自分英語わからんからああいうのはすごく助かるわ

387: ◆ueEP8Ean2lqc
10/05/02 02:09:17
その張本人が書きこんでみる
正直、>>385の書いてる通り英語はたどたどしかったし質問聴きとるのは
難しかったしでなかなか大変でした。あのときは、テンションが凄まじく高かったので
今思うと凄いペースでtsudaってましたね。あれでScala Daysに興味を持ってもらえたなら
こちらとしても嬉しいですね。

388:デフォルトの名無しさん
10/05/02 02:18:14
>387
じゃ、せっかくなんで、何か面白いこと書いてくれ。

389:デフォルトの名無しさん
10/05/02 02:21:15
さっきから見る度見る度、 Scool Days に空目してしまう件

390:デフォルトの名無しさん
10/05/02 02:29:43
Scool DaysをSchool Daysに空目

391:デフォルトの名無しさん
10/05/02 02:32:11
あ、ほんとだ、タイポ。

392:デフォルトの名無しさん
10/05/02 02:32:40
誠死ね

393:デフォルトの名無しさん
10/05/02 03:00:07
>>387
日本でも Scala を広めようず

394:デフォルトの名無しさん
10/05/02 03:38:31
>>387
あ、本人が降臨しとるw

確かにすごいペースでtsudaってるなぁとは思ったけど、自分は普通に面白かったよ
Scalaのロゴの元になった階段の写真とかも
そういやScala作者にサイン本もらってたな、うらやま

まぁ日本での布教活動を頑張っておくれ
個人的な希望を言えば特に日本語情報の充実を…


395:デフォルトの名無しさん
10/05/02 03:45:56
いまでもmsilを出力するようには出来ますね。
ilasmなんて初めて使った。

396:デフォルトの名無しさん
10/05/02 10:10:07
こういうインクリメントってなんで書けないの?
i++
++i

397:デフォルトの名無しさん
10/05/02 10:16:47
かけるように開発に参加すればいいんじゃないでしょうか

398:デフォルトの名無しさん
10/05/02 11:26:26
i++って、結局はforループでしか使わないからじゃないの。単行の副作用式だし。

399: ◆ueEP8Ean2lqc
10/05/02 11:43:03
>>388
面白いこと…うーむ、思いつかないです。申し訳ない。Scala Daysで面白かったこと
とかなら書けるかもしれないですが。

>>393
はい。もちろんそのつもりです。キラーアプリとか作れるといいんですけど、自分は
言語家というか構文解析屋?で、パーザジェネレータとかそんなんばっか作ってて、
あまり普通のアプリ作ったりしない(というか不得手)ので、その辺は他力本願に
なってしまいますね。基本的にはScalaの日本語情報の充実という形での貢献
になりますかね。

>>394
ありがとうございます。面白いと言ってもらえるのは励みになりますね。Odersky先生の
サイン本は大事にしたいところですw

日本での布教活動は今までも地道にやってきましたが、今年はもっと精力的に
行っていきたいと思います。日本語情報の充実、というのは正直なんとかしないとなーと
思っていて、特に、経験上よくハマるポイントとかまとめたいところですねー。あと、まともな
(翻訳でない)日本語版Scala本とか。

それと、Scalaでなんかわからんことがあったらここで聞け!みたいな定番の場所が一つあればなあ
、などと思っています。scala-beとかscala--tohokuとかもありますが、それほど質問は多く無いん
ですよね。結局、皆、疑問をブログとかTwitterでつぶやかれるので、その辺を見て、答えられそうな
疑問だったらできるだけレスするように心がけてますが、あちこち分散してるとフォローするのも
大変&質問への解答などが集積されないので、もうちょいなんとかしたいですね。

400:デフォルトの名無しさん
10/05/02 11:45:31
lift使った面白いWebコンテンツ出てくればScalaの名前は広がるんじゃないかなぁ?

401:デフォルトの名無しさん
10/05/02 11:52:29
いちおうTwitterで名前は広まってきてるし、その辺でもう一押しあるとよさそうだよね。

402:デフォルトの名無しさん
10/05/02 12:18:06
TwitterはRailsで作ったものをリライトしたんだよね
やっぱりスクラッチからの強さを見せたいよね

403:デフォルトの名無しさん
10/05/02 13:24:53
フロントエンドはRailsのままだと思ってたんだけど、違うのかな
バックエンドをRubyからScalaにしたんじゃなかったっけ

404:デフォルトの名無しさん
10/05/02 14:06:28
>>403
なにそれこわい。
Srails? SRuby??

405:デフォルトの名無しさん
10/05/02 15:02:06
>>382
ディスクのI/Oよりネットワークだろ…

406:デフォルトの名無しさん
10/05/02 15:27:39
>>405
お前開発したこと無いだろ

407:デフォルトの名無しさん
10/05/02 15:49:15
C FAQみたいに、Scala FAQが有るといいな。
「.NET プログラミング Tips」ってサイトも人気みたいだし、需要有ると思う。

408:デフォルトの名無しさん
10/05/02 17:02:45
>>403
Gizzardだっけ。
どっかでCassandraを使うって話も見たんだけど、どっちなんだろ。

409:デフォルトの名無しさん
10/05/02 19:41:11
Scala難しい
Railsの代わりにはなりそうもない

410:デフォルトの名無しさん
10/05/02 19:53:32
>>409
お前の頭が悪いだけ。

411:デフォルトの名無しさん
10/05/02 19:58:31
リーマンプログラマの9割以上は頭悪いからなぁ

412:デフォルトの名無しさん
10/05/02 20:12:12
まぁ頭が良かったら
プログラミングなんて他の奴にやらせるからな

413:デフォルトの名無しさん
10/05/02 20:43:43
ScalaとRailsは両立させるものじゃないのか
変わるのはRubyの部分だろ

414:デフォルトの名無しさん
10/05/02 20:49:38
>>410
タメかよwwww
呪われしエヴァ世代(初期放送時中2世代wwww)だよね^^

つーか
体育館のマットに詰めてイジメて殺したってのもあったじゃん
二つ上で・・・

415:デフォルトの名無しさん
10/05/02 21:47:58
Railsに比べてLiftも難しいの?
RailsはRubyとは別の言語を新たに習得するようなものだ、みたいなことをよく言われるけど,Liftもそうなん?

416:デフォルトの名無しさん
10/05/02 21:52:40
>>409
いやだからRailsの代わりにしたいんだったらGrailsだってば。

417:デフォルトの名無しさん
10/05/02 22:00:24
いやだからRailsの仕組みで言語がScalaでいいだろ

418:デフォルトの名無しさん
10/05/02 22:11:21
>>417 作ってから言えよ。

twitterの件は確かメッセージングの部分を置き換えただけじゃなかったか?
俺的には java.util.concurrent を使えばいいだけの部分を scala 使ってみたいから使ってみた。って印象なんだが。

419: ◆ueEP8Ean2lqc
10/05/02 23:03:57
>>418
The Why and How of Scala at Twitter
URLリンク(www.slideshare.net)
とか、Twitterがオープンソースで公開している、自社で使っているらしいソフトウェア
群を見る限りでは、バックエンドはおおむねScalaで置き換えたみたい

あと、メッセージキューについてだけど、
JavaとScalaではソースの書きやすさが(少なくともある程度慣れれば)段違いなので、
Scala使ってみたいから使ってみたという印象は受けなかったかな。Twitterの人たちは
書きやすい言語を好んで使っている印象がある。あとは、java.util.concurrent使えば
済む程度の話ならさすがに新しくライブラリ作ったりはしないと思う。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch