プログラミング言語 Scala 7冊目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/09/04(日) 20:07:34.70ttp://www.scala-lang.org/
■リンク集
ttp://sites.google.com/site/scalatohoku/%E5%8B%89%E5%BC%B7%E4%BC%9A%E8%B3%87%E6%96%99
■前スレ
プログラミング言語 Scala 6冊目
ttp://hibari.2ch.net/test/read.cgi/tech/1307416864/
■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25
■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Proの連載記事、各々で開かれた勉強会の資料などがあります。
0002デフォルトの名無しさん
2011/09/04(日) 21:10:02.11乙なんだぜ!
「ERROR:Lvが足りなくてスレッド立て(ら)れません。」
とか言われてスレ立てられなかったんだぜ…。日に日に使いにくくなる2ch。
しかしこれ、"ERROR"が全角で"Lv"が半角という統一感の無さで憤死しそうになるな…。
あと次スレからリンクにはこれも追加しようぜ
プログラミング言語Scala 日本語情報サイト
http://sites.google.com/site/scalajp/
0003デフォルトの名無しさん
2011/09/04(日) 21:25:15.300004デフォルトの名無しさん
2011/09/04(日) 21:32:59.140005デフォルトの名無しさん
2011/09/04(日) 22:14:45.740006デフォルトの名無しさん
2011/09/04(日) 22:33:14.540007デフォルトの名無しさん
2011/09/04(日) 22:36:41.321000スレッド落ちシステムの特徴だとは思う
0008デフォルトの名無しさん
2011/09/05(月) 00:46:15.08この定義はおかしいって騒ぐだけだろ?
0009デフォルトの名無しさん
2011/09/05(月) 01:31:26.76前方互換性の考慮の結果だよ
0010デフォルトの名無しさん
2011/09/05(月) 21:30:15.120011デフォルトの名無しさん
2011/09/05(月) 21:35:57.010012デフォルトの名無しさん
2011/09/05(月) 21:54:14.000013デフォルトの名無しさん
2011/09/05(月) 22:46:55.09JavaとかRubyのモヒカンのガチのキモさに触れたら、Scalaなんぞ平和そのもの。
0014デフォルトの名無しさん
2011/09/05(月) 23:14:26.13ていうかScalaやってる人って、何作ってるの?
Webから情報収集するプログラム書きたいのだが、他言語に比べて情報が少なすぎる、、。
0015デフォルトの名無しさん
2011/09/05(月) 23:29:11.96そのくらいならまずJavaで作ってみて、書き換えていけばいいのでは?
0016デフォルトの名無しさん
2011/09/06(火) 00:05:47.550017デフォルトの名無しさん
2011/09/06(火) 00:12:23.510018デフォルトの名無しさん
2011/09/06(火) 00:31:48.060019デフォルトの名無しさん
2011/09/06(火) 00:36:02.42URL url = Thread.currentThread().getContextClassLoader().getResource("log4j.properties")
という箇所で、urlにnullが格納されてしまうのですが、どなたか回避をご存知でしょうか?
(当然ながら、log4j.propertiesはクラスパス上においています。)
普通にコンパイルして実行すると、urlにはlog4j.propertiesのパスがちゃんと入るのですが…。
0020デフォルトの名無しさん
2011/09/06(火) 03:27:55.430021デフォルトの名無しさん
2011/09/06(火) 03:35:12.89Thread.currentThread().getContextClassLoader()
で取得されるクラスローダが別物なので。
> val url = getClass().getClassLoader().getResource("log4j.properties")
とやるとちゃんと取得できます。
総大将になったつもりは無かったんですけど、モヒカン過ぎると色々摩擦を生む事自体は理解してます。
あまりモヒカン的になりすぎないようにしようとは思っているのですけど、人間、すぐには変われないですね…。
0023デフォルトの名無しさん
2011/09/06(火) 06:39:24.860024デフォルトの名無しさん
2011/09/06(火) 07:44:28.630025デフォルトの名無しさん
2011/09/06(火) 09:38:56.36限界集落のOCaml村に煽られてもスルーできるが、
同じJVM言語仲間のGroovy村に煽られたら戦争だろうが……!
って感じですかね?
0026デフォルトの名無しさん
2011/09/06(火) 17:43:27.37情報が少ないならここで聞けばいいじゃん
0027デフォルトの名無しさん
2011/09/06(火) 20:03:24.84馴れ合う必要なんてないね
0028デフォルトの名無しさん
2011/09/06(火) 20:05:32.01そういう怖い人はScala使わないでください><
0029デフォルトの名無しさん
2011/09/06(火) 20:13:05.510030デフォルトの名無しさん
2011/09/06(火) 20:38:53.53http://journal.mycom.co.jp/articles/2011/09/05/efl2/index.html
0031デフォルトの名無しさん
2011/09/06(火) 20:47:44.01キモいもん貼るなボケ
0032デフォルトの名無しさん
2011/09/06(火) 22:29:36.75> scalac a.scala -cp path/*.jar
error: IO error while decoding ... with UTF-8
Please try specifying another one using the -encoding option
で数時間ハマりました。
正解は
> scalac a.scala -cp "path/*:."
だそうです。("path/*.jar:."もダメらしい)
エンコーディングとか関係ねーじゃん!
003332
2011/09/06(火) 22:32:55.34誰か簡単に解説してちょ。
0034デフォルトの名無しさん
2011/09/06(火) 22:39:38.71はてな村用語。
http://mohican.g.hatena.ne.jp/keyword/%E3%83%A2%E3%83%92%E3%82%AB%E3%83%B3%E6%97%8F
「対立した文化として→ムラ社会」なんて書いてあるけど、
モヒカンが集まってムラ社会形成してるよな。
0036デフォルトの名無しさん
2011/09/06(火) 23:20:52.380037デフォルトの名無しさん
2011/09/07(水) 13:32:17.20どうやって書くんだっけ?
0038デフォルトの名無しさん
2011/09/07(水) 19:59:16.620039デフォルトの名無しさん
2011/09/07(水) 23:21:37.73お前モヒカン村で何聞いてるの?
0040デフォルトの名無しさん
2011/09/07(水) 23:42:34.16ソースとテストケース出さずにそんな事言われても…
0041デフォルトの名無しさん
2011/09/08(木) 04:12:17.130042デフォルトの名無しさん
2011/09/08(木) 05:10:10.64長いから要約して
0043デフォルトの名無しさん
2011/09/08(木) 08:01:09.88Scalaの標準のアクター実装のせいで、負荷をかけるとOut of Memoryで落ちた
Clojureで書き直してみたら負荷かけても動くようになった
さらにコードも短くなった(行数:1,000行から260行、文字数:31kから11.5k)
0044デフォルトの名無しさん
2011/09/08(木) 08:55:01.95動的型言語では簡単に出来るけど、Scalaでは出来ません。
0045デフォルトの名無しさん
2011/09/08(木) 16:42:36.92イベント処理でrepaintを呼ぶと以前描画したものが消えてしまうのの回避方法ってある?
例えで言うと、マウスでクリックした所に円を描くプログラムに関して、
新たにクリックすると直前に描いた円が消えてしまう感じ。
ここで聞くなって話なら申し訳ない。
0046デフォルトの名無しさん
2011/09/08(木) 17:30:41.95描いた円を全て覚えておくか、メモリ上にビットマップ展開して、そこに円を描画。
paint(repaint含む)はメモリ上のビットマップを画面に描画するだけ
Java/scalaに限らず、GUI全般の問題やね
0047デフォルトの名無しさん
2011/09/08(木) 17:57:18.52ありがとう。GUIプログラミングについてもっと勉強し直す。
スレチに近くてスマソ。
0048デフォルトの名無しさん
2011/09/08(木) 17:57:46.91カッコだらけの時代遅れ糞言語なんて誰も使わねえよ、ばーかばーか
っていうのを翻訳して投稿しておいてくれ
0049デフォルトの名無しさん
2011/09/08(木) 23:58:46.23動的言語にできるという意味でなら、scalaでもできる
以上
0050デフォルトの名無しさん
2011/09/09(金) 07:31:09.91こんなことがしたいのでは?
Python
def newType(T):
class Foo(T):
pass
return Foo
C++
template <class T>
class Foo : public T {
};
0051デフォルトの名無しさん
2011/09/09(金) 10:52:05.680052デフォルトの名無しさん
2011/09/09(金) 18:00:05.89不細工を角度で誤魔化そうとするスイーツ臭はどこにいった
0053デフォルトの名無しさん
2011/09/09(金) 18:01:59.540054デフォルトの名無しさん
2011/09/09(金) 18:05:16.48def newType[T:ClassManifest]() : ClassManifest[Foo[T]] = {
class Foo[T] extends T {}
return implicitly[ClassManifest[Foo[T]]]
}
def construct[T](t:ClassManifest[T]) : T =
{
return t.erasure.newInstance().asInstanceOf[T]
}
val t = newType[Bar]()
val x = construct(t)
こっちはPython版
http://ideone.com/lNfZi
0055デフォルトの名無しさん
2011/09/10(土) 08:17:53.06馬鹿過ぎワロタwww
0056デフォルトの名無しさん
2011/09/10(土) 08:34:26.27相手にするだけ無駄
0057デフォルトの名無しさん
2011/09/10(土) 11:28:47.84隔離スレとして機能してたのに
0058デフォルトの名無しさん
2011/09/10(土) 11:39:05.96Pythonより劣る
F#のような洗練された言語設計もない
どうやってつかえばいいの?
0059デフォルトの名無しさん
2011/09/10(土) 11:52:17.030060デフォルトの名無しさん
2011/09/10(土) 16:01:01.60実体化したらそれで終わりなんて継承ツリーの中で使いにくい
自分と同じ型のメンバーを表すだけでも大変
抽象型を使ってみたが妙に不自然な書き方しか思いつかない
abstract class Base {
type TParent <: Base
var parent: Option[TParent] = None
}
class とり extends Base {
override type TParent <: とり
override def toString = "とり"
}
class とんび extends とり {
override type TParent <: とんび
override def toString = "とんび"
}
object AbstractTypeTest {
def main(args: Array[String]) = {
var とり = new とり { type TParent = とり }
とり.parent = Option(new とり { type TParent = とり })
println(とり.parent)
var とんび = new とんび { type TParent = とんび }
とんび.parent = Option(new とんび { type TParent = とんび })
println(とんび.parent)
}
}
0061デフォルトの名無しさん
2011/09/10(土) 20:37:55.020062デフォルトの名無しさん
2011/09/10(土) 21:42:59.38「使うプログラミング言語により思考は制限される」
http://www.slideshare.net/yukihiro_matz/ruby-9183142
http://itpro.nikkeibp.co.jp/article/NEWS/20110909/368352/
つまり、静的厨の発想は制限されてるから
動的言語でしか出来ない事は思い浮かばないw
0063デフォルトの名無しさん
2011/09/10(土) 21:47:24.370064デフォルトの名無しさん
2011/09/10(土) 22:00:13.97静的言語でしかできないこともあるから
両方やれば一番いいんだよな
0065デフォルトの名無しさん
2011/09/10(土) 22:36:27.470066デフォルトの名無しさん
2011/09/10(土) 22:41:08.860067デフォルトの名無しさん
2011/09/10(土) 23:42:54.39いない言語なんてつかっちゃダメだよなぁ
0068デフォルトの名無しさん
2011/09/10(土) 23:56:58.900069デフォルトの名無しさん
2011/09/10(土) 23:59:57.79モヒカン言語らしくしろよ
0070デフォルトの名無しさん
2011/09/11(日) 00:13:01.010071デフォルトの名無しさん
2011/09/11(日) 00:22:03.380072デフォルトの名無しさん
2011/09/11(日) 04:05:52.98と考えれば、静的型付けの方がリッチだな。
いらないときは静的型チェックをはずせばいいだけ。
0073デフォルトの名無しさん
2011/09/11(日) 05:30:03.220074デフォルトの名無しさん
2011/09/11(日) 06:31:09.57確かコンパイラ系を作ってる人の文章で、Javaと別のtoolに戻ったとか言ってました。
どんなtoolか知りたいので、もう一度その記事を教えて下さい。
0075デフォルトの名無しさん
2011/09/11(日) 08:30:31.50じゃあ、Dumpクラスを継承したクラスの全ての公開メソッドに
引数と戻り値を出力する処理を追加するようなDumpクラスを
Scalaで書いてみてよ
動的言語なら10行くらいで書けるから
0076デフォルトの名無しさん
2011/09/11(日) 10:44:24.56っ AspectJ
0077デフォルトの名無しさん
2011/09/11(日) 10:57:45.990078デフォルトの名無しさん
2011/09/11(日) 11:02:13.76そんな君にはdynamic proxy。
0079デフォルトの名無しさん
2011/09/11(日) 11:47:01.830080デフォルトの名無しさん
2011/09/11(日) 11:59:30.260081デフォルトの名無しさん
2011/09/11(日) 12:01:40.91コードは書けないが口だけは一人前
0082デフォルトの名無しさん
2011/09/11(日) 12:08:27.00で、それが実用においてどういうデメリットがあるの? って聞いてるんだけど。
0083デフォルトの名無しさん
2011/09/11(日) 13:03:24.060084デフォルトの名無しさん
2011/09/11(日) 13:23:30.71暗黙的変換を使って少しましな書き方ができた
でも素直じゃない
class HasParent[TParent <: Base](any: TParent) {
def parent = any.parent
def parent_=(p: TParent) = any.parent = p
}
abstract class Base {
var parent: Base = _
}
class とり extends Base {
override def toString = "とり"
}
class とんび extends とり {
override def toString = "とんび"
}
object AbstractTypeTest {
implicit def toHasParent[T <: Base](any: T): HasParent[T] = new HasParent[T](any)
def main(args: Array[String]) = {
var とり = new とり
とり.parent = new とり
println(とり.parent)
var とんび = new とんび
とんび.parent = new とんび
println(とんび.parent)
}
}
0085デフォルトの名無しさん
2011/09/11(日) 14:05:16.68自分の思い通りにならないとモヒカンのせいにするのはよくないな。
0086デフォルトの名無しさん
2011/09/11(日) 14:09:56.28スカラ
スカラ
スカラ
スカラ
スカラ
スカラ
スカラ
スカラ
スカラ
スカラ
巣から落ちた鳥は?
カラス!
0087デフォルトの名無しさん
2011/09/11(日) 14:26:26.20型引数「を」スーパークラスから継承したい場合は、まさに抽象型使えってのがScala流かと思います。あと、
ジェネリックで型引数を継承できるようにしたとして、ややこしくなるだけな気がします。型引数はメンバ
じゃないので、本来継承できるべきものじゃないですし。
あと、ここで「とび」や「とんび」クラスをさらに継承する必要が無いなら、
override type TParent <: とび
じゃなくて、
override type TParent = とび
にしてしまった方がいいのではないかと。そうすれば、new とび { type TParent = とび } じゃなくて、単にnew とび
と書けますし。
0089デフォルトの名無しさん
2011/09/11(日) 14:38:16.650090デフォルトの名無しさん
2011/09/11(日) 14:38:37.600091デフォルトの名無しさん
2011/09/11(日) 15:41:54.64009260,88
2011/09/11(日) 17:01:16.07ありがとうございます
override type TParent = とび
継承する必要がないのならこの方がよいのはわかります
それだと継承の可能性を閉じてしまいますのであえてあの書き方にしました
009360,88
2011/09/11(日) 17:04:08.90こんな書き方が許されたらと思いました
abstract class Base {
type TParent <: Base
var parent: Option[TParent] = None
}
class とり extends Base {
override type TParent = とり //ここで指定しても派生クラスで継承できる
override def toString = "とり"
}
class とんび extends とり {
override type TParent = とんび //ここで指定しても派生クラスで継承できる
override def toString = "とんび"
}
object AbstractTypeTest {
def main(args: Array[String]) = {
var とり = new とり
とり.parent = Option(new とり)
println(とり.parent)
var とんび = new とんび
とんび.parent = Option(new とんび)
println(とんび.parent)
}
}
009460,84
2011/09/11(日) 17:18:37.670095デフォルトの名無しさん
2011/09/11(日) 20:14:05.280096uy
2011/09/11(日) 21:49:39.13ゴミだから間違えるんだよな
お前みたいな奴はプログラムで変なミスするよ
むいてない 死んだほうがいい しんだほうが いい
0097デフォルトの名無しさん
2011/09/11(日) 22:10:44.72welcome to http://hibari.2ch.net/test/read.cgi/tech/1312201995/
0098デフォルトの名無しさん
2011/09/11(日) 23:51:17.550099デフォルトの名無しさん
2011/09/12(月) 02:34:06.66↑糞言語の開発者 メガネ、ハゲ、ヒゲなどが特徴
http://lamp.epfl.ch/~odersky/images/Martin.JPG
↑神言語の開発者 なんというナイスガイ!
0100デフォルトの名無しさん
2011/09/12(月) 07:02:18.990101デフォルトの名無しさん
2011/09/12(月) 08:12:06.060102デフォルトの名無しさん
2011/09/12(月) 09:14:02.69美的センスのなさが見てくれにも言語にも表れてるな
0103デフォルトの名無しさん
2011/09/12(月) 10:21:45.330104デフォルトの名無しさん
2011/09/12(月) 11:01:04.900105デフォルトの名無しさん
2011/09/12(月) 11:29:07.53慣れると避けて歩ける
無視されているのがわかるとなんとかしてレスさせようとどんな変なことでも書くようになるが、
それだと余計わかりやすくなるのでむしろ好都合だったりもする
0106デフォルトの名無しさん
2011/09/12(月) 17:43:57.000107デフォルトの名無しさん
2011/09/12(月) 18:45:32.64こんなサイトがあるからScalaにも粘着が湧くんじゃね?
0108デフォルトの名無しさん
2011/09/12(月) 18:51:25.10避けてるってば
「どんな変なことでも書くようになる」の意味噛み締めれ
0109デフォルトの名無しさん
2011/09/12(月) 18:53:42.98こんなところに書いても世の中は何も変わらんけどな
0110デフォルトの名無しさん
2011/09/12(月) 18:59:00.94自演っぽいのは時々見るよね…
0111デフォルトの名無しさん
2011/09/12(月) 18:59:12.67Scala の structural subtyping や型推論は出来損ない、とか
そういう荒し発言はやめてもらいたいね
0112デフォルトの名無しさん
2011/09/12(月) 19:35:04.73これが荒らしトリガーのレスじゃなくてなんなの(笑)(笑)(笑)
荒らしにアンカでレスしなければセーフとか思ってんのか(笑)(笑)
恥ずかしい奴だ
お前はルビーでも使ってろよ(笑)
0113デフォルトの名無しさん
2011/09/12(月) 21:10:11.060114デフォルトの名無しさん
2011/09/12(月) 22:21:51.590115デフォルトの名無しさん
2011/09/12(月) 22:23:02.98結構優れもののように思う
インテリセンスで暗黙型変換のメソッドまで表示してくれる
IntelliJ IDEAが今のところ自分のScalaメイン開発環境です。Scala IDE for Eclipseは
補完がだいぶマシになって、インクリメンタルビルドがちゃんとできるようになったので、
テキトーにプログラム書くときには重宝しています。
ただ、IntelliJ IDEAのScalaプラグインにはまだ及ばないかな、という気が(個人的には)しています。
(Java + Scalaの)inter-language renamingとか、実装するのが面倒だけどいざというときに必要になりそう
な、そういう細かいところも含めてサポートしてくれて便利だなと思います。ただ、IDEA + Scalaプラグインだけ
だとビルドが糞重いので、sbt plugin入れてます。
0117デフォルトの名無しさん
2011/09/13(火) 00:06:05.030118デフォルトの名無しさん
2011/09/13(火) 00:34:24.510119デフォルトの名無しさん
2011/09/13(火) 00:50:14.820120デフォルトの名無しさん
2011/09/13(火) 01:03:27.30かえれ
0121デフォルトの名無しさん
2011/09/13(火) 01:12:34.410122デフォルトの名無しさん
2011/09/13(火) 02:03:07.01vimがあればなにもいらないもん!
0123デフォルトの名無しさん
2011/09/13(火) 02:10:30.33……とはいえ、Scalaは本来IDEを使うべきじゃないのか
0124デフォルトの名無しさん
2011/09/13(火) 06:38:01.76Eclipseはうちのマシンだとエディタが遅くて
タイピングに付いてこないので候補に入れていませんでした。
(Java + Scalaの)inter-language renaming そんなことできるんですか
自分は コンパイラオプションで Use fsc(fast scalac)を有効にしたら
結構早くなって満足していたのですが sbt plugin で
もっと早くなるのだったら入れようかと思いました。
0125デフォルトの名無しさん
2011/09/13(火) 14:28:02.170126デフォルトの名無しさん
2011/09/13(火) 15:06:50.64俺は書く
関数のシグネチャは大事だと思ってるから省略しない
0127デフォルトの名無しさん
2011/09/13(火) 15:10:34.70Unitのときも省略しない
0128デフォルトの名無しさん
2011/09/13(火) 15:22:49.830129デフォルトの名無しさん
2011/09/13(火) 17:09:27.640130デフォルトの名無しさん
2011/09/13(火) 17:27:38.050131デフォルトの名無しさん
2011/09/13(火) 17:50:36.84なぜエロ同人が出ない
0132デフォルトの名無しさん
2011/09/13(火) 17:51:48.940133デフォルトの名無しさん
2011/09/13(火) 17:55:07.99でも一行関数とか書く気しないんだよなあ
0134デフォルトの名無しさん
2011/09/13(火) 18:42:47.65Hindley-Milner型推論じゃないですもんね
すっぱい葡萄ですね
0135デフォルトの名無しさん
2011/09/13(火) 19:12:22.21わからないのにレスしてみる
0136デフォルトの名無しさん
2011/09/13(火) 21:05:18.02あれってたまに凄いエラーメッセージを返してくるとか言われない?
強力な型推論を採用しちゃうと、型宣言のような
型に関する冗長な情報を書かなくなるので
矛盾があった時にどこがエラーか決定できなくなるんだと思うけど
0137デフォルトの名無しさん
2011/09/13(火) 23:27:22.44可読性は維持出来るんじゃないの?
0138デフォルトの名無しさん
2011/09/13(火) 23:46:16.75匿名じゃない場所で質問が来ると思ってたのかw
面白い人だなぁ
0139デフォルトの名無しさん
2011/09/14(水) 00:20:41.30Scala IDEの完成度がもう少し上がればねー。
0140デフォルトの名無しさん
2011/09/14(水) 00:28:03.84http://www.scala-ide.org/2011/09/scala-ide-beta-10-available/
SBT統合とかセミコロン表示とか、楽しげな機能が増えたな。
0141デフォルトの名無しさん
2011/09/14(水) 02:40:20.91そのセミコロン表示機能の紹介
http://scala-ide-portfolio.assembla.com/wiki/show/scala-ide/Show_Inferred_Semicolons
で例として出されているコードだけど
object Test extends App {
val result = 3;
+12;
println(result)
}
みたいに、意図せず 式が途中で区切られてしまうScalaの仕様はどうにかならないのだろうか?
たとえば、「この先セミコロンを忘れるべからず」 みたいな命令があって、
それ以降は、セミコロンが必須になるようにしてほしい。
Martin先生に直訴したら、機能追加してくれるだろうか??
実のところ、それほど多くの質問が来ることは期待してませんでした
ただ、もう少し来るかなーと思っていたのが正直なところです。その辺の
感覚が世間ズレしてるのは認めます
>>142
> みたいに、意図せず 式が途中で区切られてしまうScalaの仕様はどうにかならないのだろうか?
セミコロン省略可能であることのトレードオフというかScala慣れたらあまりぶつからない問題な気がします。私は、
(1) 基本的に行頭に2項演算子は書かない
(2) 読みやすさの問題から、行頭に演算子を置きたいときは式全体を括弧で囲む
例:
val statement: Parser[Statement] = (
while_stmt
| for_stmt
)
という感じで対処しています。(1)は既に意識してない感じです
> たとえば、「この先セミコロンを忘れるべからず」 みたいな命令があって、
> それ以降は、セミコロンが必須になるようにしてほしい。
そういうad hocな機能追加は言語屋さんは嫌う傾向にありますし、文法がさらに無駄に複雑になるという
デメリットもあるので、たぶん採用されないと思います。やるなら、自分でそういうuse("strict");みたいなの
を宣言できるコンパイラプラグイン書くか、CheckStyle的なツール作るしか無いのではないかと。
0144デフォルトの名無しさん
2011/09/14(水) 12:55:31.55ターミネータじゃなくてセパレータだってのもアレ
0145デフォルトの名無しさん
2011/09/14(水) 17:51:54.51ってこの話題、前もしたことあるような
0146デフォルトの名無しさん
2011/09/14(水) 21:13:57.50for(...) yield eならIterable[eの型]としか保証されていない?
0147デフォルトの名無しさん
2011/09/14(水) 23:54:18.60http://www.ne.jp/asahi/hishidama/home/tech/scala/collection/for.html
scalaのコレクションライブラリはだいたいが自分と同じ型を返すので
for {
a <- hoge
b <- fuga
} yield ...
みたいなのだと最初のジェネレータのhogeと同じ型を返す場合が多い
0148デフォルトの名無しさん
2011/09/15(木) 23:46:56.02セミコロンの対処方法だが、
> (1) 基本的に行頭に2項演算子は書かない
↑こういう記述スタイルが不可になるのは、窮屈だと思う。
たまに、行頭に演算子置きたい時ってあるよね!!
↓
> (2) 読みやすさの問題から、行頭に演算子を置きたいときは式全体を括弧で囲む
なるほど。。このテクニックでなんとかやってみる。Thanks!
ちょっと窮屈だけど、、まあ、慣れるしかないかあ。。
0149デフォルトの名無しさん
2011/09/15(木) 23:49:37.240150デフォルトの名無しさん
2011/09/16(金) 07:23:52.850151デフォルトの名無しさん
2011/09/16(金) 11:36:48.080152デフォルトの名無しさん
2011/09/16(金) 12:27:41.24> セミコロン推論は落とし穴でも何でもないな
落とし穴かどうかは、慣れで解決する。
それよりか、記述スタイルに制限が付くのが、イヤなの。
文法としては、ステートメントの最後には、セミコロン必須の方が、
文法として美しかっただろう。
今は、改行がステートメントの区切りであったりなかったりと、文法的に美しくない。
慣れで解決するから別に良いのだけど、言語として美しくない。
0153デフォルトの名無しさん
2011/09/16(金) 12:29:50.600154デフォルトの名無しさん
2011/09/16(金) 12:38:44.74それほど記述スタイルに制限付くものでしょうか?確かに、行頭に二項演算子とかおきたいことは
たまにありますが、それは>>142の方法で十分対処できる話ですし、頻度もそれほど多いとは思えません。
というか、セミコロン推論は、元々、低頻度で出現するパターンが書きにくくなる代わりに、高頻度で
出現するパターンが書きやすくなる、というものですよね。
また、ステートメントというか式ですね。というのはともかく、セミコロン必須の方が確かに文法はシンプル(美しいか
どうかはおいといて)になりますが、文法の美しさ(シンプルさ?)をそれほど気にするなら、極論を言えば、S式
使ってればいいのでは?とかいう話になってしまうような…。
>>154
両者が同頻度くらいで出てくるなら確かに嫌な話ですが、実際のところ、明らかに頻度の偏りがある以上、私はセミコロン推論が
あった方がトータルのコストは安くなると思います。実際、最近の言語の多くが;相当の省略をどんどん取り入れてるのはそれを
示しているかと。
0156デフォルトの名無しさん
2011/09/17(土) 01:54:58.47無理な擁護は逆効果だぞ
Scalaを愛しているかというどうかは別の話です。別にRubyとかの他のセミコロン省略できる言語でも構わないです。で、
>>152と>>154の批判に、「嫌い」とか「美しくない」以外の指標での実用的問題が発生するのかなあという話です。
私は経験上、そういう問題が発生することはほとんどありませんでしたし、Ruby等でその事がそれほど問題視
されたことも無かったと記憶しています。結局、頻度の問題だというのが私の認識です。
実際に〜というコードパターンを書きたい事が頻繁にあって、それでScalaのセミコロン推論が邪魔をして困る、
という問題提起なら意義があると思います。
0158デフォルトの名無しさん
2011/09/17(土) 02:13:32.54ユーザー側から見て多くのケースで便利になるなら問題ないという立場だったが、
>>152が言うように文法上美しくないという観点もありえる
Scala的には何を良しとするべきなのだろうね
0159デフォルトの名無しさん
2011/09/17(土) 02:14:45.020160デフォルトの名無しさん
2011/09/17(土) 02:37:40.56ていうか書くときに気にしなければならないことが増えてむしろ面倒になるし
文の区切りが分かりにくくなって可読性は落ちるし
場合によっては分かりにくいバグの元にもなるし
まあなんもいいことないよね
0161デフォルトの名無しさん
2011/09/17(土) 03:13:05.95Rubyなんて
p 1 + (1
+ 1)
て書いたら2が出力される言語だぜ?
こんな言語でも実質問題が起きてない(ということになってる)んだからScalaも無問題
0162デフォルトの名無しさん
2011/09/17(土) 05:02:50.41算術記号の名前を持つメソッドに限って、 1.+( 1 ) は1 + 1 と空白区切りで書いてよいという
シンタックスシュガーが影響を及ぼしているので、例としてはあまり適切ではない
p( 1.+( (1; +1) ) );
+メソッドの引数 (1; +1) の戻り値は最後に評価された+1なので、結局は1+1になって表示は2
0163デフォルトの名無しさん
2011/09/17(土) 05:08:19.050164デフォルトの名無しさん
2011/09/17(土) 06:33:20.29セミコロンを省略してもよい、というのとはちょっと違う
0165デフォルトの名無しさん
2011/09/17(土) 06:36:37.600166デフォルトの名無しさん
2011/09/17(土) 07:07:07.30まあ他の言語は文化ごと違うので参考にはならんな
>>161だって正しく「(2つ目の1の直後の)改行は文の終わり」と判断しているだけに過ぎん
0167デフォルトの名無しさん
2011/09/17(土) 07:15:19.27そもそもScalaのセミコロン推論もまったく問題ないがな
0168デフォルトの名無しさん
2011/09/17(土) 09:24:07.66むしろそれ相当のものは必須だと思うぜ、;。
「無くしても意味通る」とかいうレベルで考えるべき要素じゃ無いと思う。
記号は慎重に、大切に使うべき。
0169デフォルトの名無しさん
2011/09/17(土) 22:23:05.44改行、空白は人間の美的感覚というテキトーなものに左右されやすいので言語的な機能を持たせることは間違い。
Python全否定。
0170デフォルトの名無しさん
2011/09/17(土) 22:23:26.25改行、空白は人間の美的感覚というテキトーなものに左右されやすいので言語的な機能を持たせることは間違い。
Python全否定。
0171デフォルトの名無しさん
2011/09/17(土) 22:36:29.30マリナー1号のバグは有名。
0172デフォルトの名無しさん
2011/09/19(月) 14:19:46.73第1版と区別しづらいな…と思ったのだけど、コップが2つになってるんですね。
0173デフォルトの名無しさん
2011/09/19(月) 18:29:57.23openCV使ってステレオビジョンで視差画像を出したいんだが
誰か心優しい方教えてけろ
0174デフォルトの名無しさん
2011/09/20(火) 02:30:57.470175デフォルトの名無しさん
2011/09/20(火) 02:33:46.48どのように書くのでしょうか?
0176デフォルトの名無しさん
2011/09/20(火) 02:37:15.460177デフォルトの名無しさん
2011/09/20(火) 05:35:53.96(list map { i => (avg - i) * (avg - i) }).sum / list.size
0178デフォルトの名無しさん
2011/09/20(火) 05:40:12.90基本的には bash のシェルスクリプト。辛くなってくると
ファイルの頭にこれ書いて、何でもかんでも Scala で書いてるわ。
#!/bin/sh
exec scala "$0" "$@"
!#
0179デフォルトの名無しさん
2011/09/20(火) 09:05:57.08#!/bin/sh
exec scala "$0" "$@"
!#
print("hello")
$ time ./a.sh
hello
real 0m13.741s
user 0m0.815s
sys 0m2.254s
小さい方にはスケーラブルじゃないな
0180デフォルトの名無しさん
2011/09/20(火) 11:13:17.24コンパイルしてるから関係ない?
http://www.google.co.jp/search?q=scala+groovyserv
http://www.infoq.com/jp/articles/groovyserv
0181デフォルトの名無しさん
2011/09/20(火) 12:47:16.49面白そうかとは思うけどただの言語オタの趣味ならやめておこうと思ってる
0182デフォルトの名無しさん
2011/09/20(火) 12:54:56.630183デフォルトの名無しさん
2011/09/20(火) 13:06:50.12javaのwicketやrubyのrailsと
並べて評価した場合どうですか?
言語の違いでフレームワークも結構変わりますかね?
0184デフォルトの名無しさん
2011/09/20(火) 13:49:42.300185デフォルトの名無しさん
2011/09/20(火) 13:58:12.51>>183が実際使ってみてなにか分かったら報告してくれ
それまで連絡はしなくてかまわん、以上だ
0186デフォルトの名無しさん
2011/09/20(火) 13:58:38.900187デフォルトの名無しさん
2011/09/20(火) 14:41:47.30時間の無駄だからな
0188デフォルトの名無しさん
2011/09/20(火) 18:56:12.26スクリプトで、サードパーティのライブラリ使いたい場合とか、scalasが何気に便利です。
http://blog.twiwt.org/e/f835d9
スクリプトの最初の方にdependency書くだけで、勝手にライブラリのjar落として来てくれ&&そのまま使えます。
>>184
知的好奇心、という面でもScalaは結構面白い試みを色々していると思います。全く新しいパラダイムを提示する、という
わけではないですが、Scala 2.8のコレクションアーキテクチャとかは精巧に作られていて凄いですし、プラグインとし
て型システムを拡張できるおかげで、型システムに関する実験的&&そこそこ実用的な試みがしやすいと思います。
あとは、Scalaの型システム自体も、λ計算をベースに発展してきた静的型付け関数型言語とは異なったアプローチ
を取っているのですが、それが、既存の静的型付け関数型言語のモジュールシステムとかとうまく対応付く、とかも
面白いです。
何が面白いかは主観になりますが、ともあれ、単に既存のアプローチを集めただけの言語ではないことは確かです。
0190デフォルトの名無しさん
2011/09/20(火) 21:14:12.44ああ、書いた直後に誤解されるかな、と思った懸念がそのまま…
>>184ではScalaに対して知的好奇心をそそるものが無い、と言いたかったわけではなく、
>>181が求めてるのは知的好奇心じゃなく実用性なんじゃね、その問いに>>182の返しは変じゃね、
ということです。
0191182
2011/09/20(火) 22:30:25.19どうもすいませんorz
ともあれ、実績の話なら、Twitterだけではなく、既にVMWare, LinkedIn, Amazon.com, Foursquare, Novell, Siemens,
Remember the Milkとかそれなりに名前の知られてるのが色々ありますね。求人見ても、Scalaなどの関数型言語の
経験のあるエンジニアを求めてるところも増えて来てる感じです。名前出せないけどとある金融系のところで
使われているとか(Scala Days 2011での情報)。
あとは、前どっかで見た話でソース失念なのですが、githubが一部をScalaで置き換えてるという話もあります。
国内だと、有名なところはあまり無いですけど、有限会社ITプランニングさんとか、GMO株式会社さんとかパテントビューロさんとか、
その他中小/フリーランスで使われているところが少しずつ増えて来てるみたいですね。
全く問題が無いわけじゃないですけど、使える周辺ツールは一通り揃っていますし(sbt, ScalaTest/Specs)、IDEに関してもScala版が
だいぶ進歩した他、IntelliJ IDEAは「普通に使える」レベルになってます。あとは、Scala自体の教育コストとか、チーム開発でのノウハウ
とか、それ以外の政治的な話が問題になってくるのかなあと思ってます。
0193デフォルトの名無しさん
2011/09/22(木) 00:12:33.24確かに便利だけど、java しか入っていない環境に持って行って即座に展開できるようなものがあったらなあ、とも思います。
0194デフォルトの名無しさん
2011/09/22(木) 10:07:34.99TypeSafeの作ってくれたインストーラ使え
ttp://typesafe.com/stack/download
0195デフォルトの名無しさん
2011/09/23(金) 16:01:47.86https://wiki.scala-lang.org/display/SW/ScalaDays+2011+Resources
0196デフォルトの名無しさん
2011/09/24(土) 08:53:29.72IDEの話を読んでて思ったのは、やっぱりjavaの流れでやってる人が
多いんだな。と思った。
なぜ他の言語コミュと上手くいかんのかしらん。でも何かあれば
FUD FUDだからな。S式言語なんて使ってもいない奴がDISるけど
相手にされないのが普通なのにな。いちいち FUDといってるような
無駄はしないわな。ここでも他言語を一人前にDISる連中はおるよう
だけど、わがままだよな。(>>113など)海外のscala使いにそんな狭量を感じる
事は少ないような印象は持ってるんだが。
0197デフォルトの名無しさん
2011/09/24(土) 08:56:56.49|Scala自体の教育コスト
全てを知らなくても使えるだろうけど、自由度を得るために、複雑な仕様を
みてるとC++と同じに見えることはある。複雑すぎて使いこなせない言語
なんじゃなかろうか?better javaというだけでいいならそれでいいんだろう
けどね。
0198デフォルトの名無しさん
2011/09/24(土) 09:15:24.83Scala関数型言語じゃない
そのように見える機能を集めたOOだろ
0199デフォルトの名無しさん
2011/09/24(土) 09:20:57.86そのサイトも他をDISってscalaを持ち上げるパターンだよね。
別にその信念で使ってることは問題ではないけど、発想が減点法というか
他の言語を使っててDISる人も減点法的に書いて使えないと喚く連中は
見かけるから、阿呆な連中は他にもおるとは思うがね。
優れてるならその点だけ全面的にだして話をすればいいだけなんだけどな。
ここでもそうだけど、rubyへの敵対感はかなり強すぎるよな。なんか幼稚
なんだよね。
松本氏の態度に気に入らない連中も多いのも理解はできるけどさ。
0200デフォルトの名無しさん
2011/09/24(土) 09:27:54.13そうゆう見方もあるね。
>>199
続き、ブログとかでかかれて第三者が読むときって、他をDISって持ち上げる
ような阿呆としか言えない書き方より、どう使って行ったらいいか?という
ことを書いてくれて特徴を生かせるアイデアを出していけばいいんだよね。
言語が複雑になれば、関数や機能が似通ったもんだとかよく使い方がわからない
ものは増えるけど、どんなときに有効か分かるだけでずいぶん読者は参考になるよね。
だけど、DISるだけというのは、それ以上の情報が含まれないから、読む価値
としてはあまりなくなるよね。
0201デフォルトの名無しさん
2011/09/24(土) 09:32:17.01DISられて当然じゃないか?
>なぜ他の言語コミュと上手くいかんのかしらん。
一般論として、Scala特異の事情があるかというと、どうなんでしょうね。他の言語コミュニティとの
摩擦というのは、それなりに名前が知られてきた言語だと大体とこでもある話のような。
>海外のscala使いにそんな狭量を感じる
>事は少ないような印象は持ってるんだが。
コアなScalaistがJavaをこきおろしまくってるのは結構よく見ます。ただ、大体そういう人たちは
生産性の問題から真剣にJavaを嫌がってて、Javaをこき下ろしたい、という印象はあまり受けないです。
ちなみに、海外のScalaistがML/OCaml/HaskellとかCommon Lisp/Scheme/ClojureをDISってるのは
ほとんど見ないです。というか、JVM系言語で言うと、Clojureとかの人たちがむしろScala意識しまくりで、
コード行数の比較の話になると、かなりの確率でScalaが出てきます。
あと、Scalaコミュニティの人(海外勢含む)は不当なDISりには結構敏感で、CeylonやKotlinの
中の人が根拠レスの「Scala is too complex」マーケティング展開したときは、中の人のブログ
がかなり炎上してました(根拠レス、というのは、本当に"too complex"だけしか言わなくて、
どこが"too complex"なのか、というまともなDISりが皆無でした)。Ceylonについては、Gavin King
が、捨て台詞吐いてブログ閉鎖するくらいの勢いで。あと、Odersky先生ご本人が、不当なScala DISが
あったらブログにコメントとかしてるのを時折みます。
0203デフォルトの名無しさん
2011/09/24(土) 10:38:53.120204デフォルトの名無しさん
2011/09/24(土) 10:54:00.250205デフォルトの名無しさん
2011/09/24(土) 12:10:11.04こういうことをサラッと書いてしまうのも、
また理由があればdisって良いという思想もヤベェw
0206デフォルトの名無しさん
2011/09/24(土) 12:20:07.85JavaもC++もいたるところでディスられまくってるけどね
C++なんかよく耐えてるよな
実際ディスってるやつでC++使ったことないやつも多いだろ
0207デフォルトの名無しさん
2011/09/24(土) 12:21:22.36いいんじゃないか?言語作者自信が、ブログ炎上させて閉鎖に追い込んだりと一部では、思想体系がネオナチに近いって言われているからな。
0208デフォルトの名無しさん
2011/09/24(土) 12:24:08.180209デフォルトの名無しさん
2011/09/24(土) 12:28:28.75なぜか言語じゃなくて個人攻撃になる
コミュニティがどうとか口調が怖いとか
そういう低レベルなところでしか言語を語ることができないのが問題
英語読めないやつが多いんだろうな
0210デフォルトの名無しさん
2011/09/24(土) 12:34:29.23反論でファビョったり、一方的な言い逃げとかだとあららって感じ
0211デフォルトの名無しさん
2011/09/24(土) 14:30:13.89DISるのって根拠が不十分なことも多かったり、実際に使ってない
状況で、オナニーしてるだけのもあってね。それは水嶋さんが
書いてるような傾向もあるんだけど、他のところならスルーする
ところがこっちではFUDだとか刈込にいったりするからな。
おかしいんだよな。
0212デフォルトの名無しさん
2011/09/24(土) 14:33:56.67たいてい会話が成り立たないから、炎上してしまうんだろうな。
言語界のネオナチか。。。なんでそこまで陶酔するんだろうか?
Scalaに麻薬的要素があるの? 知らんねんけど
0213デフォルトの名無しさん
2011/09/24(土) 14:38:56.54言語でも何でも
0214デフォルトの名無しさん
2011/09/24(土) 14:46:26.390215デフォルトの名無しさん
2011/09/24(土) 15:00:38.71disじゃなくてただの感想言っただけなのに突撃してくるイメージ。
0216デフォルトの名無しさん
2011/09/24(土) 15:09:27.76「議論できないのは日本人の悪いところ」と言わんばかりに揚げ足を取り、
挙句には「◯◯を示せたので満足です」「実は◯◯は重要だとは思っていません」などと捨て台詞を残して去って行く。
0217デフォルトの名無しさん
2011/09/24(土) 15:12:32.670218デフォルトの名無しさん
2011/09/24(土) 18:59:05.570219デフォルトの名無しさん
2011/09/24(土) 19:44:07.53日本のネットのプログラマーは救いようがねえな
しかも本人には言えず2chでネチネチと叩くんだから酷すぎるわな
0220デフォルトの名無しさん
2011/09/24(土) 20:03:32.790221デフォルトの名無しさん
2011/09/24(土) 20:59:20.13http://mobile.twitter.com/tatsuya6502/status/117522292564692992
>38
これって、主にJVMのGC実装の問題で、
追加でscalaの不変データ構造の実装の問題なのかな。
0222デフォルトの名無しさん
2011/09/25(日) 00:02:46.87こういうやつのscala版が必要なのか、akkaあたりで良いのか
http://akka.io/docs/akka/1.1/general/jmm.html
0223デフォルトの名無しさん
2011/09/25(日) 00:39:29.14JVM言語でとりあえず両方触れるぐらいの人が多いのと、
あとは、たまたま当時のscala実装(>221)で商用アプリの実装が上手いかず
clojureを使ったら上手くいったという、経路の書き込みが多いから。
移行時に行数が出てくるのは当たり前だけど、
javaからrubyに移動した時と同じ話で
静的型チェックを補うテストコードまで考えていないし、
scalaでチェック済みではあるので、rubyでテストコードが膨らんでscalaに移行したら総行数減ったというのとは
ちょっと違う。
そして、cl,schemeと行数比較する機会や意味はあまりない。
0224デフォルトの名無しさん
2011/09/25(日) 02:04:05.68twitterの話は、2.8以降の話なんだろうか?
http://mobile.twitter.com/tatsuya6502/status/117522292564692992
の書き込みは、一部勘違いがあるのではないか、というのが私見です。原理的に、現在のSTW型のGCは、
色々工夫されているとはいえ、メモリ量に応じて最大停止時間が長くなる傾向があるので、
特にメモリ搭載量がどんどん増えてるサーバでは、そっちの方が問題なんじゃないかと。Erlang VMのGCは
詳しくないですが、Erlangの複数のプロセスでGCが走ったらやっぱり問題が起きるような気が…。Erlang VM
のGCは詳しく無いので、外してるかもしれません。
>>223
clojureも不変データ構造が基本なので、scalaでダメで、clojureで上手く行ったとしたら、それは当時のScalaの不変データ構造の実装が
あまりこなれて無かった、というのがあるでしょうね。
>>224
Continuation Workshop参加してましたので、Scala < 2.8なのかそれ以降なのかわからないですけど、今のJVM(1.6.0 u24以降くらい?)だと
エスケープ解析が効くので、関数型プログラミングでよくあるパターンの、大量の短寿命オブジェクトによる実行コストの増大はかなり減らせます。
実験的に、implicit conversionで短寿命オブジェクト生成しまくるベンチマーク取ってみましたが、うまいことスタックにアロケートされてるっぽく、GCが
ほぼ起きてなかったです。あと、immutable objectがGCと相性悪いか、というと、使い方の問題も大きいと思います。2.8で導入されたVector
型はかなり効率が良くて、コンパイラ内部にこれを導入しただけでパフォーマンスが結構改善したという話があったり。
Java 6を採用できる現場がどのくらいあるのか、って話は別にあると思いますが。
0226デフォルトの名無しさん
2011/09/25(日) 07:56:15.29印象があるけど、ここって前スレの後半にもあったけどClojureを敵視してる
人たちがいるよ。特に敵対する必要もないのに無駄に敵をつくろうとしてる。
0227デフォルトの名無しさん
2011/09/25(日) 09:50:08.97私が見ている範囲がずれてるのかもしれませんが、設計思想の根幹が違うこともあってか、
(Clojureが好き∧Scalaが好き)という方はあまり見かけないです。Clojure作者のRich Hickeyご本人
からして、Scalaには批判的な立場で、実際にpublicな場で"Scala isn't really a functional language"
等等のという批判をしています。
ちなみに、Clojureを敵視しているScalaな人は、国内でも海外でもほとんど居ないです。Scalaな人が、
Clojure --> Scala という批判への応答として、Clojureコミュの人に何か言うことはあっても、積極的に
Clojureに勝負を挑むモチベーションがそもそも無いだけだと思いますが。
ここでClojureを敵視してる人を何名か見かけるのは事実ですけど、それが原因でClojureコミュニティとの軋轢を生む
というのは杞憂じゃないかと。
正直なところ、Clojure言語そのものを羨ましいとは思わないのですが、I/Oも含めて(準)標準ライブラリが揃っているのは
良いなあと思います(ScalaはI/Oが…)。
0229デフォルトの名無しさん
2011/09/25(日) 12:16:21.04日本人で「ぼくのかんがえたさいきょうのIOライブラリ」を作って世に問うというのはどうか。
0230デフォルトの名無しさん
2011/09/25(日) 12:27:04.64それはとても楽しそうな案だと思う。
0231デフォルトの名無しさん
2011/09/25(日) 14:11:23.73個人的には。
0232デフォルトの名無しさん
2011/09/25(日) 14:33:05.430233デフォルトの名無しさん
2011/09/25(日) 15:19:13.56素直な感想を書くとそうかもしれない。でも、受け取る側は批判ととる。
これがSCALAクオリティー
その言葉が述べられたコンテキストをはずしてたのがまずかったですね。コンテキストとしては、
Scalaはpurityをプログラマに強制しないので、関数型言語としては不適格というもので、
関数型プログラミング=良いもの、という前提に立ってる人の言葉としては、十分な「批判」だと思います。
ちなみに、私自身はRich Hickeyの批判に妥当性が無いとも言って無い、というか彼の立場からすればある程度妥当だろうとすら思っている
ということは付け加えておきます。念のため。
0235デフォルトの名無しさん
2011/09/25(日) 16:19:36.07Perlの知名度を上げPerl業界に大きく貢献した
◆CgacaMDhSQでは話にならない
帰れ
Perl忍者様に土下座しろ詫びろ
0236デフォルトの名無しさん
2011/09/25(日) 16:39:30.270237デフォルトの名無しさん
2011/09/25(日) 17:25:24.550238デフォルトの名無しさん
2011/09/25(日) 17:25:27.540239デフォルトの名無しさん
2011/09/25(日) 17:40:49.63何もないけどこのままでいいのかな
0240デフォルトの名無しさん
2011/09/25(日) 19:04:16.160241デフォルトの名無しさん
2011/09/25(日) 23:09:23.590242デフォルトの名無しさん
2011/09/26(月) 00:23:11.28We will have a PrePrint of Greg's book out soon, with final publication set for early next year.
http://www.scala-lang.org/node/10448#comment-47711
http://www.biosimilarity.com/publications.html
歴史秘話ヒストリア
http://www.amazon.com/Pro-Scala-Monadic-Design-Patterns/dp/143022844X (発売中止)
Monadic Design Patterns for the Web has moved to Artima
http://comments.gmane.org/gmane.comp.lang.scala/19713
0243デフォルトの名無しさん
2011/09/26(月) 00:52:21.27Scalaz Tutorial: Enumeration-Based I/O with Iteratees
http://apocalisp.wordpress.com/2010/10/17/scalaz-tutorial-enumeration-based-io-with-iteratees/
最新のJAVA APIでScala/JVMの関数型IOが高速化することが
できたら実装する人いるんだろうか。
発信源のHaskellさんの記事もろもろ
http://www.google.co.jp/search?q=Enumerator+Iteratee
0244デフォルトの名無しさん
2011/09/26(月) 01:00:29.74http://www.scala-lang.org/node/10448 (上のリンクと同じ)
スレッドの最初から出てくる、Tony MorrisはScalaz始めた人ですね。ただ、スレッドを流し読みした感じ、
Scalazの本にはならないんじゃないですかね?本の中で紹介とかはしそうですが。
0246デフォルトの名無しさん
2011/09/27(火) 00:26:25.830247デフォルトの名無しさん
2011/09/27(火) 04:54:11.670248デフォルトの名無しさん
2011/09/27(火) 11:58:56.460249デフォルトの名無しさん
2011/09/28(水) 19:50:27.83「Scala2.9.1はScala2.9.0.1と完全にバイナリ非互換であることを目標にしています。」
ってどういう意味?いや意味というか意図というか。前後の文章とのつながりがわからん。
あと、バイナリ非互換って目標にするようなものなの?
0250デフォルトの名無しさん
2011/09/28(水) 20:01:24.540251デフォルトの名無しさん
2011/09/29(木) 04:37:46.16ギリギリまで書いてたんだな
0252デフォルトの名無しさん
2011/09/29(木) 12:36:51.070253デフォルトの名無しさん
2011/09/29(木) 12:44:57.280254デフォルトの名無しさん
2011/09/29(木) 13:01:46.68申し訳ありません。それは誤植です。「バイナリ互換であることを目標」が正しいです。そう読めば意味
が通るようになっています。Twitterで既に何名かの方に指摘を受けているので、正誤表に載せていただくようにします。
>>250
一瞬何のことだかわからなかったのですが、p.703のリスト99.1ですか。これも誤植ですね。
同じく、正誤表に載せていただくことにします。ご指摘ありがとうございます。
>>251
それほどギリギリ、というわけではないのですが、大体書籍が出版される頃には2.9.1が
出てるだろう、という目測が立つくらいの時期ではありますね。ちなみに、誤解されると
申し訳ないので言っておくと、2.9.1 finalそのものの改善点(REPL高速化など)については
載っていません。記事自体もページ数の制約もあり、あくまで2.9新機能の概要なので、
おまけ程度に思っていただければ。
>>253
明らかに誰かわかる形でコテハンやってる時点で既にキモい奴だなあと自分で思います。
0256デフォルトの名無しさん
2011/09/30(金) 00:49:34.440257デフォルトの名無しさん
2011/09/30(金) 01:57:36.50mizushima kagerou
でググれ
0258デフォルトの名無しさん
2011/09/30(金) 09:25:22.88うごいてよ!今動かなきゃ(ry
0259デフォルトの名無しさん
2011/09/30(金) 12:04:00.70Performance, Flexibility and Correctness Improvement
http://implicit.ly/scales-xml-02
ライブラリー実装:
ミュータブルのが速いし省メモリだよ派
遅延評価寸止め革命中の今がのし上がるチャンスだよ派
0260デフォルトの名無しさん
2011/10/01(土) 04:39:38.26そっちも気になってたんですけど、@djspiewak の
Anti-XML https://github.com/djspiewak/anti-xml
も標準のXMLライブラリよりフットプリントが軽くて、
かつimmutableなのをウリにしてるんですよね。ちょっと
ベンチマーク取ってみたいところですね。
0262デフォルトの名無しさん
2011/10/02(日) 00:45:21.37javaのFuture/Promiseと別物?
Scalaの限定継続プラグインを使っているみたいだし。
http://akka.io/docs/akka/1.1/scala/dataflow.html
0263デフォルトの名無しさん
2011/10/02(日) 01:09:08.63なるほどっすな。
Scala2.8の登場で、XMLをもっとうまく実装できる環境が整ったんでしょうね。
そして、これは有望なWebフレームワーク?
BlueEyes
https://github.com/jdegoes/blueeyes
A lightweight Web 3.0 framework for Scala, featuring a purely asynchronous architecture, extremely high-performance, massive scalability, high usability, and a functional, composable design.
Sinatraクローン(Scalatra)をネタに上を目指すとか。MVCならLift使えとか。
0264デフォルトの名無しさん
2011/10/02(日) 08:20:30.82scalaで高速なパーサを作る定番はあるのでしょうか?
パーサコンビネータライブラリしかないのかなあ。
Scalaのパーサコンビネータライブラリは、速度が重要になるパーザを書く用途には
本質的に向いていません(これはコップ本にも書かれていますが、Scalaのパーザコンビネータライブラリの
実装によるところが大きいです)。
速度的に、それよりもっと良いものとして、@djspiewak の GLL Combinators
https://github.com/djspiewak/gll-combinators
というのがあります。これもパーザコンビネータですが、Scala標準のものより速度が出るように
設計されています(特に、LL(k)文法に収まる場合)。
もっと速度を追求したい場合は、既存のJava用パーザジェネレータを使うという手もあります。いくつか
注意すべき点はありますが、基本的にScalaから問題なく使えます。ANTLR辺りが個人的にお勧めですが、
この辺は(必要に応じて)どれ選んでも良いと思います。性能がかなり重要とのことなので、実際にいくつかの
パーザジェネレータで簡単なベンチマーク取ってみるのが良いかと。
最後に手書きの場合ですが、Scalaで手書きパーザで速度出したい、となると、どうしてもある程度手続き的なコード
書く必要があって、その場合、本質的にJavaとあまり変わらないコードになります(型推論とかで多少楽はできますが)。
概念的にはjava.util.concurrent.FutureとAkkaのFutureは類似のものですが、
AkkaのFutureはモナドなので、他のFutureから簡単にFutureを合成できたりと、
機能がよりリッチなものになっています。で、Promiseですが、これは
java.util.concurrentには無いもので、データフロー変数と呼ばれるものを作成
して、後からそこにFuture型の値をくくりつけることができるようになっています。
0267デフォルトの名無しさん
2011/10/02(日) 10:27:30.17ありがとうございます。
やはり標準のパーサコンビネータは向いてないようですね。
GLL(GLRのLL版?)をまずは試してみます。
0268デフォルトの名無しさん
2011/10/03(月) 18:06:33.040269デフォルトの名無しさん
2011/10/03(月) 19:17:15.84尾崎のクオリティが低いばかりに…申し訳ありません…
0270デフォルトの名無しさん
2011/10/03(月) 20:51:21.890271デフォルトの名無しさん
2011/10/03(月) 21:07:28.17このコードってどう書くの?
リストにタプルを追加しようとするとtype mismatch になっちゃう。
0272デフォルトの名無しさん
2011/10/03(月) 21:17:56.37コンセンサスがとれているならともかく、まあ確かに、具体的にクオリティの低い箇所を
具体的に指摘すべきだよな。
0273デフォルトの名無しさん
2011/10/03(月) 21:24:36.060274デフォルトの名無しさん
2011/10/03(月) 21:44:06.13Scala歴二日のHaskellプログラマが書いてみました
意図どおりですかね?
たぶんエラーになったコードを貼ったほうが思い違いが少なくてよいと思います
var l : List[(Int,Int)] = List()
for (i <- List(1,2,3)) {
l ::= (i, i + 1)
}
println(l)
Scalaキモいなあが二日間いじった感想です
subtypeキモいです
これからこのスレでお世話になろうと思います
よろしくおねがいします
0275デフォルトの名無しさん
2011/10/03(月) 22:00:00.46タプルを囲むカッコを書いたつもりで、実は引数のカッコを書いていた、
というのがありがちだから、とりあえずタプルのカッコを更にカッコで包んでみるんだ。
0276デフォルトの名無しさん
2011/10/03(月) 23:19:34.11ありがとう!
どうやらListの宣言の時点で間違っていた(理解していなかった)みたい。
object GetOptions {
def main( args:Array[String] ){
var list:List[(String,String)] = List()
for ( i <- 1 to 10 ) {
//list =:: "a"+i -> i.toString()
list = list ::: List("a" + i -> i.toString())
}
println (list)
}
}
普段仕事でJavaとPHPしか触らなくて、まったくScalaの勉強が進まなかったから、とりあえずPerlのGetOptions
みたいなものでも作ってみようと思っていきなり躓いてた。
0277デフォルトの名無しさん
2011/10/03(月) 23:41:17.15ListBuffer使えばいいと思うよ
object GetOptions {
def main(args: Array[String]) {
val buf = new scala.collection.mutable.ListBuffer[(String, String)]
for (i <- 1 to 10) {
buf += "a" + i -> i.toString
}
println(buf.result)
}
}
0278デフォルトの名無しさん
2011/10/04(火) 15:29:50.69(1 to 10).map(i => "a" + i -> i.toString)
または
for(i <- 1 to 10) yield i => "a" + i -> i.toString
どうしてもリストが良ければ、最後で
toList
でどうでしょうか
0279デフォルトの名無しさん
2011/10/05(水) 09:32:38.59「Typesafe Stack 1.1」がリリースしてるよぉ
http://typesafe.com/stack/download
こっそり同僚のPCにインストールするのに便利!
0280デフォルトの名無しさん
2011/10/05(水) 09:53:37.980281デフォルトの名無しさん
2011/10/05(水) 20:35:54.05何を作る気なんだ?
0282デフォルトの名無しさん
2011/10/05(水) 23:31:18.43元々の質問読んだら?
0283デフォルトの名無しさん
2011/10/06(木) 08:22:43.960284デフォルトの名無しさん
2011/10/06(木) 18:19:49.240285デフォルトの名無しさん
2011/10/06(木) 18:34:14.330286デフォルトの名無しさん
2011/10/06(木) 18:53:13.750287デフォルトの名無しさん
2011/10/06(木) 19:48:54.71Scalaやったところでモヒカンになれる気しかしねぇぜ!
0288デフォルトの名無しさん
2011/10/07(金) 00:10:20.650289デフォルトの名無しさん
2011/10/07(金) 13:03:21.77文系馬鹿がScala使ったところで、ベタージャバにしかならないね
文系にはオブジェクト指向
0290デフォルトの名無しさん
2011/10/07(金) 13:19:39.520291デフォルトの名無しさん
2011/10/07(金) 13:31:23.340292デフォルトの名無しさん
2011/10/07(金) 20:20:05.30ベターなJavaでも、全然OKだと思う、、。
だが、問題は、Java自体が人気下降気味なこと。
Android関連で、また、盛り返してくれればうれしいけど。
Javaは、GUIとかがイマイチ垢抜けないよね。
SwingXとかでサクサク作れる開発環境があると良いのだが。
0293デフォルトの名無しさん
2011/10/07(金) 22:47:55.670294デフォルトの名無しさん
2011/10/07(金) 23:00:40.020295デフォルトの名無しさん
2011/10/08(土) 01:13:37.510296デフォルトの名無しさん
2011/10/08(土) 01:23:29.470297デフォルトの名無しさん
2011/10/08(土) 02:00:11.940298デフォルトの名無しさん
2011/10/08(土) 02:32:55.070299デフォルトの名無しさん
2011/10/09(日) 06:31:46.58のや
0300デフォルトの名無しさん
2011/10/09(日) 11:49:29.38つまんねえんだよクズ
これだから土人は…
0301デフォルトの名無しさん
2011/10/09(日) 21:37:20.95頭がすっからかんなのね。気の毒に。
0302デフォルトの名無しさん
2011/10/09(日) 21:47:38.710303デフォルトの名無しさん
2011/10/10(月) 20:18:15.70scalaはベターC++を目指したD言語と同じ末路確定
0304デフォルトの名無しさん
2011/10/10(月) 21:36:34.720305デフォルトの名無しさん
2011/10/10(月) 23:40:58.620306デフォルトの名無しさん
2011/10/10(月) 23:42:46.370307デフォルトの名無しさん
2011/10/11(火) 01:46:27.81言語仕様に優れ、C言語と連携もばっちりのD言語は
かつてベターC++と一部で騒がれたが、結局は普及率せず風前の灯し火
scalaの立場と似ているだろ
そして言語仕様の酷いPHPが普及率で君臨し続ける
0308デフォルトの名無しさん
2011/10/11(火) 02:36:23.39別に国内での普及率なんてどうでもいいなぁ
俺はScalaが気に入ってるから使うけど、JavaやPHPが好きな人はそれを使い続けてればいいと思うよ
0309デフォルトの名無しさん
2011/10/11(火) 03:22:06.62だから普及してくれないと困る
0310デフォルトの名無しさん
2011/10/11(火) 03:31:28.22同意。
とりあえず一度普及してくれれば、その後もメンテされ続けるからなあ。
0311デフォルトの名無しさん
2011/10/11(火) 06:45:00.66しかし何故に比較対象がPHP…??
C言語とかも出てくるし、どういう分野での話をしてるのだ?
著名じゃない所でもScalaを採用している会社が増えています。Typesafe社という形でサポートビジネス等を
立ち上げたからには、それらの会社が軒並みScalaを破棄するという事にならなければ、当分はメンテされるでしょう。
Typesafeがどれだけ儲かってるかはわかりませんが、主要メンバって結局はEPFLのScalaチームなので、Typesafe
が儲からなくてもメンテナンス自体は継続可能な状態ですし。
あと、互換性の問題を無視して言語仕様を拡張しようとしても、公式MLで文句言う「仕事でScala使ってるユーザ
(海外)」がそれなりに居ますし今後しばらくは「破壊的な」言語仕様の変更は起こらないと思います。
0313デフォルトの名無しさん
2011/10/11(火) 07:37:09.810314デフォルトの名無しさん
2011/10/12(水) 06:59:33.93小田好先生ってこんなイケメンだったんだな
Odersky先生に会った個人的な印象としては、ナイスミドル、という感じでしたね。なんか顔つきがあまり泥臭くない
というかw あと、結構情熱家だなあ、とも。
0316デフォルトの名無しさん
2011/10/12(水) 21:31:21.43使う人がいなくなる。
0317デフォルトの名無しさん
2011/10/12(水) 21:38:54.52でもあれIKVMだったっけ?
0318デフォルトの名無しさん
2011/10/13(木) 00:44:34.76環境が限られるというデメリットもあるよねえ。
、
まあ、OpenJDKとかもあるから、JVMがなくなることはないと思うのだけど、、。
あと、JavaならGWTで JavaScriptに変換できるけど、
Scalaではそういうのないの??
0319デフォルトの名無しさん
2011/10/13(木) 01:39:52.57http://lamp.epfl.ch/~magarcia/ScalaNET/
jdk2ikvm: A source-level conversion tool to migrate Scala programs from JDK to .NET
http://lamp.epfl.ch/~magarcia/jdk2ikvm/
ikvmを使ってconvertするみたいだけど、よくわからん
>あと、JavaならGWTで JavaScriptに変換できるけど、
>Scalaではそういうのないの??
あるよ。
http://scalagwt.github.com/
まだ正式リリースは無いが、GWTのJavaで書かれたデモ(に相当するScalaコード)ほとんどがコンパイル/動作できるくらいには進展してる
らしい。
0321デフォルトの名無しさん
2011/10/13(木) 02:58:37.260322デフォルトの名無しさん
2011/10/13(木) 09:03:52.31が圧倒的に多いようだからだよ。逆に言えば、Java使いから魅力が
あっても、それ以外からは魅力がない言語ということを暗に意味してる。
C#なんかも.NETじゃなかったら普及してないだろう?それと同じ。
0323デフォルトの名無しさん
2011/10/13(木) 13:50:46.170324デフォルトの名無しさん
2011/10/13(木) 21:24:51.51確かに全CPUを使いきってくれる。
手軽だね。
ただ、共有データを操作する際にロックは必要だと思うけど、見当たらない。
これはJavaのロック機能を使えということなのかな。
0325デフォルトの名無しさん
2011/10/14(金) 01:43:53.25これが広まらずに終わるのって正直やだなと思います。
scalaが信用され利用できる範囲が広がる事を祈ってます。
まず、並列コレクションでは、明示的なロック操作を行う事は基本的には想定されていません。
並列コレクションのモデルは、いわゆる「暗黙的な」並列化という奴で、不変コレクションを使って
いて、共有データを高階関数内で書き換えなければ、処理が並列化されている事は、プログラマ
から「見えない」というものです。ですから、そもそも並列コレクション専用のロックメカニズムは
用意されていません。Javaのsynchronizedを使うことはできますが、基本的にそれはやらない方
が賢明です。
ロックを使う必要がある場合には、ロックを使わないでいい形に、並列コレクションを使った処理にうまく
変換するか、Actorなどの「明示的な」並行処理を提供するライブラリを利用するべきです。
0327デフォルトの名無しさん
2011/10/14(金) 16:25:08.380328デフォルトの名無しさん
2011/10/14(金) 16:32:58.510329デフォルトの名無しさん
2011/10/14(金) 16:33:05.200330デフォルトの名無しさん
2011/10/14(金) 17:29:39.85特に日本語版
0331デフォルトの名無しさん
2011/10/14(金) 17:47:37.270332デフォルトの名無しさん
2011/10/14(金) 17:52:17.71そこの学生じゃなくても入館はできるよね?
0333デフォルトの名無しさん
2011/10/14(金) 19:21:44.980334デフォルトの名無しさん
2011/10/14(金) 22:06:01.77学ぶための手段としてSchemeを使う本で、コップ本はScalaを学ぶための本。
だいぶ毛色が違うんで目指してる方向が逆ならそれぞれ役に立たない。
それから、ほんとにまったくプログラムしたことない状態なら
コップ本一冊だけでやるのはかなりきつい
0335デフォルトの名無しさん
2011/10/14(金) 22:24:07.930336デフォルトの名無しさん
2011/10/14(金) 23:25:37.56任意の関数を受け取る時点で無理じゃない?
def wrap[T,R](f: Function1[T,R]) = (t: T) => {
println("wrapped")
f(t)
}
こんな感じでFunction0からFunction22用まで定義するとか
0337デフォルトの名無しさん
2011/10/14(金) 23:37:43.340338デフォルトの名無しさん
2011/10/15(土) 00:31:43.64一応やりたい事のサンプルみたいなのをpythonで書いておきます。
型のない言語だと可変長引数でなんとでもなるのですが、
タイプセーフにできないものかと思いまして。
...def wrap(func):
... def cls(*args, **kwargs):
... brfore()
... try:
... return func(*args, **kwsrgs)
... finally:
... after()
... return cls
こういう感じでラップ前と同じ引数で呼び出せば
実行前になんらかの処理を実行してくれて、
かつ呼び出す側はラップされてるかどうかを
意識する必要がないという状態にしたいです。
できなければいくつか引数の違う関数を作る方法で妥協するのが一番かなと思ってます。
0339デフォルトの名無しさん
2011/10/15(土) 00:33:25.370340デフォルトの名無しさん
2011/10/15(土) 00:50:17.65俺よくこういうコードを書くんだがもしかしてこんなので代用できねーか?
def wrap[A](block: => A): A = {
before()
try {
block
} finally {
after()
}
}
wrapに渡すときに引数も一緒に渡す
wrap(hoge(a,b))
やりたいことと違ったらゴメンだが
0341デフォルトの名無しさん
2011/10/15(土) 00:50:47.56どうも発想の筋が悪いというか、関数型っぽくないというか
0342デフォルトの名無しさん
2011/10/15(土) 03:11:52.66関数型ではデコレーターとかあまり使わないのでしょうか?
代わりにどのような方法で代用するのでしょうか?
ログ出力とか楽なのになぁ。
0343デフォルトの名無しさん
2011/10/15(土) 08:30:28.80残念ながらscalaはJavaとあわせるという制約があって、そうなっていないので
ちょっとぎこちなくなるね。
0344デフォルトの名無しさん
2011/10/15(土) 14:47:24.92レスありがとうございます
JavaとJavaScriptは少しだけ書けます
JavaもJavaScriptのように自由に関数を扱えればいいのにと思っていたところ
Scalaを知って大変興味を持ちました
SICPは翻訳も内容も難しいとのことですが、挑戦してみよぅと思います
Scalaプログラマの皆さん、ありがとうございました
0345デフォルトの名無しさん
2011/10/15(土) 16:36:35.35SICPは何年かかっても読む価値のある本だ
問題も解けよ。感動がある
分厚いので挫折しそうになるが、なんとか二章までがんばれ
偉そうなこと言えるレベルになるぞ
0346デフォルトの名無しさん
2011/10/15(土) 16:57:13.27後半はmeta circular
重要だけどちょっと毛色が違う
0347デフォルトの名無しさん
2011/10/15(土) 17:08:53.26なるほど!
1引数の関数しかないってことですか。
じゃあ関数をカリー化する関数を作れば
なんとかなりそうな気がしてきました。
ありがとうございます。
def wrap[T, U](func: T => U): T => U = {
val r: T => U = {...}
r
}
こんな感じ?
0348デフォルトの名無しさん
2011/10/15(土) 21:56:40.01そのメソッドと同名のフィールドがあると呼び出せません。
public class A {
private int m;
public int m() { return 0; }
}
--- scala
def f(A a) {
a.m() <-- エラー
}
scalaではメソッドとフィールドの名前空間が同じためかと思うのですが
回避策はあるのでしょうか?
0349デフォルトの名無しさん
2011/10/18(火) 00:38:14.38http://twitter.github.com/scala_school/basics2.html
0350デフォルトの名無しさん
2011/10/18(火) 00:41:04.56http://apocalisp.wordpress.com/
http://www.codecommit.com/blog/ruby/monads-are-not-metaphors
0351デフォルトの名無しさん
2011/10/18(火) 01:30:20.95http://dl.dropbox.com/u/261418/Monads_are_Elephants/index.html
これを貼れというステマですか?
0352デフォルトの名無しさん
2011/10/21(金) 13:59:25.96ビルドパスに追加するか聞かれてうざったいんだけど、これ消せない?
0353デフォルトの名無しさん
2011/10/22(土) 08:43:48.90SICPを読むくらいならHaskell勉強した方が学びやすいし、ためにもなると思うよ。
基礎的な勉強がしたいならTAPLの方がオススメ ttp://www.cis.upenn.edu/~bcpierce/tapl/
0354デフォルトの名無しさん
2011/10/22(土) 10:35:57.23「Scalaプログラミングに欠かせない機能---Scalaの基本4」
http://itpro.nikkeibp.co.jp/article/COLUMN/20111011/370491/
0355デフォルトの名無しさん
2011/10/22(土) 12:21:48.240356デフォルトの名無しさん
2011/10/22(土) 13:04:35.670357デフォルトの名無しさん
2011/10/22(土) 14:00:01.44連載っていうか、もともとは月刊雑誌の一回だけの特集を、Webに乗せただけ。
日経ソフトウェアの2011年6月号 pp.78-79 が、
http://itpro.nikkeibp.co.jp/article/COLUMN/20111011/370488/
変数とクラスを学ぶ---Scalaの基本1
同じく pp.85-87が
http://itpro.nikkeibp.co.jp/article/COLUMN/20111011/370491/
Scalaプログラミングに欠かせない機能---Scalaの基本4
だから、最初から これで完結だよ。
0358デフォルトの名無しさん
2011/10/24(月) 00:33:03.64直接さらしてしまう、という欠点を持っているけど
Scalaではケースクラスにしつつ内部表現を隠蔽することも簡単にできるらしい
これってどういうこと?
0359デフォルトの名無しさん
2011/10/24(月) 08:36:24.45なんかOCamlとかでもできそう。
0360デフォルトの名無しさん
2011/10/24(月) 10:03:50.82内部と外部の境界がモジュールなので、クラスとかに比べたら少し大きい
0361デフォルトの名無しさん
2011/10/24(月) 17:22:44.52ありがたがってる土俵が関数型のプログラミングではあまりありがたみが
ないというのはよく有りそうだよ。
0362デフォルトの名無しさん
2011/10/24(月) 17:53:53.250363デフォルトの名無しさん
2011/10/24(月) 18:15:42.33何を言っているのか理解できないので
くわしく教えて
0364デフォルトの名無しさん
2011/10/24(月) 19:49:26.90をやるなら重宝するんだけど。でもScalaをやってる人のソースを見てるとやっぱり
関数型っぽくないというのかJavaの後継という使い方に見える。
関数型のスタイルでScalaをやってるブログなどがあったらぜひ見てみたいので
英語でもいいし教えてね。
0365デフォルトの名無しさん
2011/10/24(月) 20:13:16.660366デフォルトの名無しさん
2011/10/24(月) 23:01:42.68それも詳しく知りもしないくせに
0367デフォルトの名無しさん
2011/10/24(月) 23:11:28.45いいじゃん別に
disらせとけば
なんか不利益でも被ってんの?
0368デフォルトの名無しさん
2011/10/24(月) 23:20:17.71どうせScalaをdisられたら顔真っ赤にして反論するくせにw
0369デフォルトの名無しさん
2011/10/24(月) 23:31:42.662chの言語スレに来てグダグダいうよりはよっぽど
0370デフォルトの名無しさん
2011/10/24(月) 23:41:40.60ocamlのvariantもモジュールで隠蔽できるから、
たぶんそれ書いた人の勘違いじゃないか?
0371デフォルトの名無しさん
2011/10/25(火) 00:42:22.72たぶん書いた本人です。
>>358はちょっと誤解で、元の発言は
http://twitter.com/#!/kmizu/status/128044795615653888
http://twitter.com/#!/kmizu/status/128045117264248832
これはこれでちょっとわかりにくいですけど、要はパターンマッチ使いたかったら
variantの内部構造さらさなきゃいけないけど、Scalaだとパターンマッチのために
内部構造さらさなくても良いよね、という話です。
Haskellだとviewパターン、F#ならActive Patternがあるので似たような事が比較的簡単に
できますが、少なくともOCamlではvariantの構造をさらさなければパターンマッチング
できない(モジュールにvariantの構造を隠蔽しちゃうと外からパターンマッチングはできない)と
認識しています。もし間違っていたら、文献へのポインタを教えていただけるとありがたいです。
>>364
>>365が挙げてるようにscalaz界隈の人(単なるマニア向けライブラリに見えますが、意外にこれ
使ってるScalaプロジェクトは多いです)はかなり関数型的なスタイルやってますし、sbtも
かなり関数型的なコードになってます。全体的に見て、関数型スタイルでScalaプログラミング
やってる人は以前に比べてかなり増えてる印象です(少なくとも海外は)。
あと、ブログでも、関数型的なスタイルでScalaやってるところは、たくさん見つけられるかと。
@djspiewak さんのブログとか、@jamesiry さんのブログとか、色々ヒットしますよ。
0373デフォルトの名無しさん
2011/10/25(火) 00:58:38.49Int型の値に代入すると怒られるんだが,match文使わずにエレガントに
代入したい.
0374デフォルトの名無しさん
2011/10/25(火) 07:44:36.51variantの構造、で何を指してるのかがイマイチわからない
例があると良いと思う
0375デフォルトの名無しさん
2011/10/25(火) 08:02:14.78あれと同じことをOCamlでやるにはパターンガード使うしか無いけど、
それでパターンマッチできてるとは言わないわな
0376デフォルトの名無しさん
2011/10/25(火) 08:14:15.470377デフォルトの名無しさん
2011/10/25(火) 08:20:26.47(つまり、forall をいろんなところにつけれる)
例えば:
def foo(id : [A]. A => A) : Unit =
id(id)(())
これが普通にできればMLやHaskellより明らかに強力と言えるのではないか。
0378デフォルトの名無しさん
2011/10/25(火) 08:38:11.46ですよねー
0379デフォルトの名無しさん
2011/10/25(火) 08:46:09.53(* データ型の隠蔽 *)
module type S1 = sig
type r
type s
type t = Foo of r | Bar of s
end
(* コンストラクタの隠蔽 *)
module type S2 = sig
type t = private Foo of int | Bar of string
end
(* 幽霊型 *)
module type S3 = sig
type s = Foo | Bar
type 'a t constraint 'a = s
end
0380デフォルトの名無しさん
2011/10/25(火) 11:55:40.54http://martin.jambon.free.fr/mikmatch-manual.html#htoc10
0381デフォルトの名無しさん
2011/10/25(火) 16:32:39.86書いてみた
import scalaz.Forall
def foo(id : Forall[({ type X[A] = A => A })#X]) : Unit = id.apply(id.apply[Unit])(())
foo(new Forall[({ type X[A] = A => A })#X] { def apply[A] = identity })
0382デフォルトの名無しさん
2011/10/25(火) 17:30:56.34import scalaz.Forall
def foo(id : Forall[({ type X[A] = A => A })#X]) : Unit = id.apply(id[Unit])(())
foo(Forall[({ type X[A] = A => A })#X](_(identity)))
0383デフォルトの名無しさん
2011/10/25(火) 18:57:12.81ありがと いくつかのブログ漁ってみるよ。
0384デフォルトの名無しさん
2011/10/25(火) 22:36:49.23ファイル入力のSource.fromFileに対応するようなものです。
今はFileOutputStream〜PrintWriterといったJavaのAPIを使ってますが正直面倒です。
0385デフォルトの名無しさん
2011/10/25(火) 22:50:02.400386デフォルトの名無しさん
2011/10/27(木) 08:47:25.77自力でFunction2にラップする?
そういうユーティリティが既にある?
0387デフォルトの名無しさん
2011/10/27(木) 13:41:22.80scala.Function1をimportして
new Function1<Integer,Integer>() { public Integer apply(Integer i) {...}}
とすればよいのではないか。
0388デフォルトの名無しさん
2011/10/27(木) 13:56:12.49ScalaのtraitはJavaのinterfaceになるから、具体メソッドはすべてつぶされてしまう(ヒドス)。
Function1はtraitなのでJavaから便利に使うためにabstract classにする。
==========scala============
abstract class Fun[-A,+B] extends Function1[A,B] {
override def andThen[T](g: (B) => T): (A) => T = this.andThen(g)
override def compose[T](g: (T) => A): (T) => B = this.compose(g)
override def toString(): String = this.toString()
}
0389デフォルトの名無しさん
2011/10/27(木) 13:59:31.00import scala.Function1;
import scala.Some;
public class Main {
public static void main(String[] _args) {
Fun<Integer,Integer> f = new Fun<Integer,Integer>() {
@Override
public Integer apply(Integer n) {
return n+1;
}
};
System.out.println(new Some(3).map(f));
}
}
0390386
2011/10/28(金) 08:38:52.69さんきゅー!
基本は388&389の方針に従った。
scala側は
abstract class Func1[-A,+B] extends Function1[A,B]
で十分みたい。
andThen,compose,toStringは勝手に生成されたよ。
実装のあるtraitをabstract classでextendsしたら
その実装を引き継ぐコードが自動生成されるみたいだね。
(Int)=>Intの関数は、JavaではFunction1<Object,Object>に
見えるらしく、Java側はこんなコードになったけど、
まあ、我慢できる範囲かな。andThenもこのまま使えたよ!
| Func1<Object,Object> f = new Func1<Object,Object>() {
| @Override public Object apply(Object v) {
| return (Integer)v + 1;
| }
| };
ありがと!
0391デフォルトの名無しさん
2011/10/28(金) 11:37:21.630392デフォルトの名無しさん
2011/10/28(金) 19:04:31.14Sourceはなぜこんな非対称な仕様なんだろう…
0393デフォルトの名無しさん
2011/10/28(金) 20:59:19.04どうだろう?
| def using[T](out : OutputStream)(f : Outputstream => T) : T = {
| try {
| val r = f(out)
| out.close()
| r
| } catch {
| e => out.close(); throw e
| }
| }
0394デフォルトの名無しさん
2011/10/28(金) 21:01:17.450395デフォルトの名無しさん
2011/10/28(金) 21:07:42.43usingFile("foo.txt") {
out =>
val w = new PrintWriter(out)
w.println("firstLine")
w.println("secondLine")
}
0396デフォルトの名無しさん
2011/10/28(金) 22:17:31.96out => ってどこから使えるようになったの?
0397デフォルトの名無しさん
2011/10/28(金) 22:43:58.48仮引数だよ。
list.map { a => a+1 }
の a と一緒。
0398デフォルトの名無しさん
2011/10/28(金) 22:47:46.220399デフォルトの名無しさん
2011/10/28(金) 22:49:50.13それなに?まだよくわからん
引数と違うの?
0400デフォルトの名無しさん
2011/10/28(金) 23:15:58.69仮引数ってのは正確な物言いじゃあないかもしらんが、Java でも何でも一般的な概念でしょう。
0401デフォルトの名無しさん
2011/10/28(金) 23:21:54.39つか仮引数とかって基本情報とかに出てきたような過去の記憶が。
0402デフォルトの名無しさん
2011/10/29(土) 08:05:34.67関数を引数として渡すときに #Scala ではしばしば {}で囲って表現する。
someArray.foreach(x => save(x); println(x)) って書くよりも
someArray.foreach {
x =>
save(x)
println(x)
}
って書いた方がDSLぽくてカッコいいでしょ。
0403デフォルトの名無しさん
2011/10/29(土) 09:07:43.26> Function1はtraitなのでJavaから便利に使うためにabstract classにする。
>
> ==========scala============
> abstract class Fun[-A,+B] extends Function1[A,B] {
その目的のためには、scala.runtime.AbstractFunction1が既に標準で用意されている也。
0404デフォルトの名無しさん
2011/10/29(土) 09:24:30.22気になってるのは out が前触れなしに出てきたからでしょ。
これってたとえば 「def add1(a: Int) = a + 1」 の add の直後に出てくる a つまり仮引数と一緒なんですよ。
で、もう最初に気になったあたりを見直すと、
def using[T](out : OutputStream)(f : Outputstream => T)
ってなってて、結果的に usingFile の 2 つめの引数の型は「Outputstream => T」になる。
これは「Outputstream を一つ引数にとり T を返す関数」を要求してることになるから、
(out: Outputstream) => hogehoge....
と書くところを
out => hogehoge...
と書けるわけ。
0405デフォルトの名無しさん
2011/10/29(土) 13:54:53.12def using[T](out : OutputStream)(f : Outputstream => T)
って表記されればわかった。
REPLってなんで定義した関数の型とか引数の情報も
詳しく出してくれないのですか?F#ならでるのですが
0406デフォルトの名無しさん
2011/10/29(土) 23:47:25.13え、嘘、出るだろ!?と思ってやってみたら出たけど、
どういう時に出ないの?
0407デフォルトの名無しさん
2011/10/30(日) 02:18:06.25SIP-12 - Uncluttering Scala's syntax for control structures.
http://docs.scala-lang.org/sips/pending/uncluttering-control.html
(なぜか過去のコメントが見られなくなってしまったようです)
個人的には、利点があまり感じられない上に、
ユーザ定義の制御構造との統一感が無くなるので、
賛成できないのですが。
0408デフォルトの名無しさん
2011/10/30(日) 03:02:51.57他はどっちでもいいかな
0409デフォルトの名無しさん
2011/10/30(日) 09:40:42.29#Scala がますます #Haskell や #OCaml みたいになるな。
しかしあまりJavaと離してしまうと、Javaユーザーが導入しづらくなり、
ポストJavaの立場がやばくなるのでは。scalaユーザが増えてほしい俺としては
ちょっと反対。
0410デフォルトの名無しさん
2011/10/30(日) 09:51:31.15その#は何?
0411デフォルトの名無しさん
2011/10/30(日) 09:54:00.13個人的には、もっと早いタイミングで導入するのならアリだった。
シンタックスがよりJavaっぽくなくなってしまうことはそれほど問題じゃないと思う。
ただ、2.10のタイミングで、こういう、言語の表現力を上げるわけでもない「些細な」
構文的変更入れてしまうのは、反対というか遅すぎるな。
まだSIPの段階なんで入ると決まったわけじゃない。提案者が
Odersky先生ではあるけれど、まだpendingだし、MLで反対票が
多ければ入らない可能性も十分ある(2.8のときに、Seq -> Sequence
の名前変更が、反対が多くて断念したという実例とか)。
今は当時よりもScalaを実用で使ってるユーザが増えてるので、幅広く
意見集めれば反対票も出てくるのでは、と思う。
0413デフォルトの名無しさん
2011/10/30(日) 11:10:07.78Javaユーザが敬遠してしまう要因を増やすことになると思うがそれはよい?
JavaユーザがScalaへ移行することは重要ではないと言っている?
最初の問いについては、元々Scalaの構文はJava互換でないので、>>407くらいの
変更が入ったところで、敬遠する要因が増えるかというとそんなに変わらないのでは、というのが自分の考え。
ただ、「2.10のタイミングで」これを入れるのは、Scalaへの移行を検討しているJavaユーザを遠ざける
要因になり得るので、反対(既存の構文がすぐに使えなくなるわけではないにせよ、
しばらく、旧構文と新構文を使ったコードの両方が出てきて、無用な混乱を招きそう)。
二つ目の問いについては、重要だと思っている。だからこそ、SIP 12に対しては反対。
なら行動起こせよ、と言われそうなので、説得力のある反論をまとめて、>>407のページに
コメントする事は検討中。
0415デフォルトの名無しさん
2011/10/30(日) 12:20:19.45お前も然るべきところで意見できるように精進しろよ^w^
0416デフォルトの名無しさん
2011/10/30(日) 12:31:12.240417デフォルトの名無しさん
2011/10/30(日) 13:17:07.97できれば導入して欲しいな。
せっかく一引数関数のかっこを不要にしてるんだから。
0418デフォルトの名無しさん
2011/10/30(日) 15:46:25.800419デフォルトの名無しさん
2011/10/30(日) 16:42:09.31Javaなんて忘れて新しい秩序をつくるんだ
0420デフォルトの名無しさん
2011/10/30(日) 16:45:16.71未だにJavaで満足してる奴はもう切り捨て!いらね!
というわけで「Javaっぽさ」という視点はもうScalaには不要
0421デフォルトの名無しさん
2011/10/30(日) 20:38:06.81カッコは必ず書く派としては賛同できんな。
言語仕様として「できる」ようにする事には必ずしも反対ではないが、原則は書くべき。
0422デフォルトの名無しさん
2011/10/30(日) 20:49:46.820423デフォルトの名無しさん
2011/10/30(日) 21:53:06.95現在の
if (expression) expression else expression
という構文は廃止して
if expression then expression [else expression]
という構文になるってことか。
ただ、expression の外側に "( )" をつけてもそれはexpression だから、
if ( expression ) then expression [else expression]
はOKなんだよね?
つまり、then 必須になるってこと?
0424デフォルトの名無しさん
2011/10/30(日) 22:23:50.380425デフォルトの名無しさん
2011/11/04(金) 10:06:39.96scala.swingのフレームに張り付けるなんてことは可能でしょうか?
scala.swingは薄いラッパーといわれているので、Javaとまぜて使えないかと期待してます。
0426デフォルトの名無しさん
2011/11/05(土) 15:30:38.80できるよー。scala.swingのコンポーネントには、peerというメソッドがあって、対応するSwingの
コンポーネントを取り出すことができる。
val panel : scala.swing.Panel = ...
val peer = panel.peer
みたいな感じで
0427デフォルトの名無しさん
2011/11/05(土) 16:12:50.58横からだけど便利だな〜
objectにしておいてくれたほうが良かった気がするけど。
何か理由があるのかな?
0428デフォルトの名無しさん
2011/11/05(土) 21:19:41.59ありがとうございます。
私のやりたかったこととは逆(scalaで書いていた部品をJavaに取り込む方法ですよね?)
ですが、便利そうです。
なお私のやりたかったことはwrapでできるということがわかりました。
0429デフォルトの名無しさん
2011/11/07(月) 01:00:13.70もうScala不要じゃね?
0430デフォルトの名無しさん
2011/11/07(月) 01:13:52.900431デフォルトの名無しさん
2011/11/07(月) 03:15:48.89? extends とか読めない
Scalaのほうが良いと思う
0432デフォルトの名無しさん
2011/11/07(月) 07:32:22.170433デフォルトの名無しさん
2011/11/07(月) 10:58:20.13これぐらいしかnewsがないな。
xtext2.1リリースで、xtendもバージョンアップしたのかな?
http://www.infoq.com/jp/news/2011/06/xtext-20
0434デフォルトの名無しさん
2011/11/08(火) 14:15:14.590435デフォルトの名無しさん
2011/11/08(火) 14:21:55.62val predicate = [ Person person | "Hans" == person.name ]
0436デフォルトの名無しさん
2011/11/08(火) 17:42:24.870437デフォルトの名無しさん
2011/11/08(火) 19:57:24.06もちろん皆 vimだよな?!
0438デフォルトの名無しさん
2011/11/08(火) 23:03:23.170439デフォルトの名無しさん
2011/11/08(火) 23:05:28.630440デフォルトの名無しさん
2011/11/09(水) 00:10:47.06JetBrainsのKotlin といい、 ほとんど同じような言語開発する暇あったら、
Scala を手伝ってやれよ、って思ってしまう。
言語ばっかり乱立しても、共倒れするだろうに。
0441デフォルトの名無しさん
2011/11/09(水) 00:19:08.57JVM上のbetter javaのCeylonやKotlinとはちょっと意味合いが違うと思う。
0442デフォルトの名無しさん
2011/11/09(水) 00:27:54.68Javaのシンタックスシュガーに徹するんならJSRにのせたりしないのかね。
0443デフォルトの名無しさん
2011/11/09(水) 00:59:45.83仕様は日和っているわりに、これから実装しますとか実用性もない状態で、誰が使おうと思うのだろう
0444デフォルトの名無しさん
2011/11/09(水) 03:11:09.070445デフォルトの名無しさん
2011/11/09(水) 06:07:14.92Scalaより単純で実用的と言ってるんだから、使える標準ライブラリとひとまとめにしてさっさと公開すればよいのにね
結局、現時点でScalaの方が基本インフラ整ってる分実用性が高いとか皮肉すぎる
0446デフォルトの名無しさん
2011/11/09(水) 06:33:03.79発想が「ぼくのかんがえた さいきょうの Better Java」だから、だろうねぇ。
0447デフォルトの名無しさん
2011/11/09(水) 10:14:51.22http://www.infoq.com/jp/news/2011/11/xtext21
scalaこれで実装したら遅くなるんだろうな
0448デフォルトの名無しさん
2011/11/09(水) 23:00:13.38理想と現実の妥協点がよく考えられてるんだけど、後発のおいしい所取り狙ってる言語は、
なんかよくわからずにテキトーにScalaの一部分持ってきてるだけに見えるんだな
0449デフォルトの名無しさん
2011/11/10(木) 00:58:45.17あんまり学会発表しなくなった?
http://www.scala-lang.org/node/143
0450デフォルトの名無しさん
2011/11/10(木) 01:10:23.66もしかして、こっちで少し指導してる?
並列とDSLだね。(C++テンプレート使った奴が何年か前かなり流行ってた。最近はHaskellとかも)
0451デフォルトの名無しさん
2011/11/12(土) 05:41:40.07よりなだらかになったと考えるべきじゃね。だから Scalarはむしろ
xtendを大歓迎すべきだと思う。そしてxtendに新しい機能が追加される
度に「あーそれ2年前にやったわー」と言っておけばよい。
問題はむしろJavaがいつまでも使われ続けること。
0452デフォルトの名無しさん
2011/11/12(土) 06:33:46.170453デフォルトの名無しさん
2011/11/12(土) 06:43:17.48単体テストしたりコミットしたりするだろ?それを考えると
そこまで大差ないと思うんだが。
0454デフォルトの名無しさん
2011/11/12(土) 06:52:33.300455デフォルトの名無しさん
2011/11/12(土) 12:52:56.770456デフォルトの名無しさん
2011/11/12(土) 13:50:53.980457デフォルトの名無しさん
2011/11/12(土) 14:23:29.35http://sales.zeroturnaround.com/
変わりに非商用プロジェクト向けのJRebel Socialなるものが
https://social.jrebel.com/
そして、facebookかtwitterでログインしろとか
0458デフォルトの名無しさん
2011/11/12(土) 22:11:01.67今は,scala.io.Source.fromFile(file).getLinesで一行ずつ読みながらつなげていってますが、
どうも馬鹿げているので。
0459デフォルトの名無しさん
2011/11/12(土) 22:17:49.010460デフォルトの名無しさん
2011/11/16(水) 01:54:53.92前スレを見たら余裕で紹介されてた
0461デフォルトの名無しさん
2011/11/17(木) 07:30:00.45forはwhileでガチガチに最適化するのがいい
0462デフォルトの名無しさん
2011/11/18(金) 19:45:48.66ものすごく親和性が高い気がする
0463デフォルトの名無しさん
2011/11/18(金) 21:44:24.300464デフォルトの名無しさん
2011/11/19(土) 00:56:45.66http://live.nicovideo.jp/watch/lv71111927
ドワンゴ研究開発チャンネル
0465デフォルトの名無しさん
2011/11/19(土) 04:47:49.820466デフォルトの名無しさん
2011/11/19(土) 10:46:18.94tokuhirom、ma.la?っていう人の話だけ聞きたい
色々なスレで見かけるけどWEB業界で有名らしいね
動画ありませんか?
0467デフォルトの名無しさん
2011/11/19(土) 11:39:12.140468デフォルトの名無しさん
2011/11/19(土) 12:10:04.06なにこれ面白そうじゃん
タイムシフト予約したわ
あまり初心者向けにならないでほしい
0469デフォルトの名無しさん
2011/11/20(日) 01:22:05.72面白そうだな
ドワンゴのレベルを見させてもらおう
0470デフォルトの名無しさん
2011/11/20(日) 11:13:49.830471デフォルトの名無しさん
2011/11/20(日) 14:02:51.620472デフォルトの名無しさん
2011/11/20(日) 15:08:48.040473デフォルトの名無しさん
2011/11/20(日) 15:41:44.46内容は初心者向けに平易なものにしてくれてたのかな
0474デフォルトの名無しさん
2011/11/20(日) 15:43:50.070475デフォルトの名無しさん
2011/11/20(日) 15:49:59.240476デフォルトの名無しさん
2011/11/20(日) 20:25:13.99public class C implements Comparable { ... }
のサブクラスをscalaで定義したいのですが、ここにある問題にぶつかってしまいました。
http://scala-programming-language.1934581.n4.nabble.com/extend-from-a-Java-class-interface-implementing-Comparable-without-type-parameters-in-2-8-0-x-td2258995.html
class D extends C {
def compareTo(other:AnyRef) : Int = 0
}
とやっても
class D needs to be abstract, since method compareTo in trait Comparable of type (x$1: T)Int
is not defined (Note that T does not match AnyRef)
というエラーになります。
なにか回避策はないでしょうか?
0477デフォルトの名無しさん
2011/11/20(日) 20:26:31.02できればscala側で何とかしたいのですが…
0478デフォルトの名無しさん
2011/11/20(日) 21:08:29.880479デフォルトの名無しさん
2011/11/20(日) 21:11:47.43型が違うのか
anyrefとobjectで
0480デフォルトの名無しさん
2011/11/20(日) 22:31:57.43"Note that T does not match AnyRef"
っていうメッセージのとおり、compareToの引数の型がAnyRefではだめってだけじゃないの?
リンク先のメーリングリストの議論は、2.8のRCのときだからたまたまbugってたというだけで、関係なさそうだけれど
0481デフォルトの名無しさん
2011/11/20(日) 22:43:50.37http://stackoverflow.com/questions/3329001/scala-class-cant-override-compare-method-from-java-interface-which-extends-java
0482デフォルトの名無しさん
2011/11/21(月) 00:29:22.790483デフォルトの名無しさん
2011/11/21(月) 00:34:27.70怖いお
0484デフォルトの名無しさん
2011/11/21(月) 00:38:26.76そもそも人気高くて入れなさそうだけど
0485デフォルトの名無しさん
2011/11/21(月) 00:50:39.16景気のいい話さ
0486デフォルトの名無しさん
2011/11/21(月) 01:26:05.89本当にニコニコかという感じだったw
0487デフォルトの名無しさん
2011/11/21(月) 03:12:02.220488デフォルトの名無しさん
2011/11/22(火) 08:25:06.61さすが技術には力を入れているっていう感じだった。
0489デフォルトの名無しさん
2011/11/22(火) 09:58:05.880490デフォルトの名無しさん
2011/11/22(火) 10:01:14.690491デフォルトの名無しさん
2011/11/22(火) 23:14:37.57病欠ですいませんorz
0492デフォルトの名無しさん
2011/11/23(水) 01:04:25.68草の根的なScala勉強会も、地方にストリーミングしてほしいなあ。
0493デフォルトの名無しさん
2011/11/23(水) 01:08:30.570494デフォルトの名無しさん
2011/11/23(水) 01:30:16.47これって毎週やってんでしょ?ネタなくならないの?
たまに録画みるけどすごいぐだぽよ〜な感じだよね
0495デフォルトの名無しさん
2011/11/23(水) 01:56:03.090496デフォルトの名無しさん
2011/11/23(水) 15:29:35.16@ymnk さんというスーパーハカーの力あってのものでしたね…
あのクオリティを毎週維持できてたのはほんと凄いとしかいいようが無いです
震災の影響で休止になったままなのが残念
0497デフォルトの名無しさん
2011/11/23(水) 18:01:37.76いやまあ、たぶん発言の仕方でバレてる気もしますが。
0499デフォルトの名無しさん
2011/11/23(水) 18:35:53.93ついでに>476にも愛の手を
ちょっとでかけるので、手短に言うと、>>476の問題はJava側でワークアラウンド用のJavaコード書くしかないです。
これは、ジェネリックなクラス/インタフェースの型パラメータ無し(raw type)をスーパータイプとして
Java側で継承したときに起きる、ややレアな問題で、当面は対処されないと思います。
0501デフォルトの名無しさん
2011/11/23(水) 20:47:44.23早速ヒロちゃんが来てる。このブログ主は訳してるだけだから・・・そっとしておいたげて。
0502デフォルトの名無しさん
2011/11/23(水) 20:50:23.76http://blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html
すでに、炎上してて、読む気が起こらん。FUD連呼厨をみてどこも同じだな。
とは思った。
0503デフォルトの名無しさん
2011/11/23(水) 21:07:31.740504デフォルトの名無しさん
2011/11/23(水) 21:13:13.09ありがとうございます。
Javaで接続用のクラスを作ることにします。
eclipseだとscalaとJavaを同一プロジェクトに共存させられないのが
こういうとき面倒ですね。
0505デフォルトの名無しさん
2011/11/23(水) 22:00:40.96そこのコメント欄、読みづらすぎw
0506デフォルトの名無しさん
2011/11/23(水) 22:04:51.03実はScalaTimeのしょぼラッピングぶりとか見て切れてたりして
0507デフォルトの名無しさん
2011/11/24(木) 01:43:06.26eclipseでScalaとJavaを同一プロジェクトに共存させることはできます(というかそれをするために、JDTがまともな拡張ポイントを提供してくれてない
せいで、ScalaのEclipseプラグインはかなり苦労してます)。単に、Javaパッケージ下に.scalaファイル置けばそれでOKです。
>>501
さすがに、ブログ主がその主張をしてるとは思ってません。日本語だけ見る人が訳のまとめ見て誤解したら
嫌だなあ、と思ってつい長文コメント書いてしまいました。ただ、そのブログ主にとっては迷惑だったかもしれませんし、今は反省してます…
>>506
自分も、JodaTimeは良い設計してると思うだけに、その作者がこんなに残念な(感情的な)書き散らしをするのだなあ、というのはちょっとショックでした。
0509デフォルトの名無しさん
2011/11/24(木) 03:02:29.87そして人間関係は別だったりする。
日本の技術者は、普段は公平性を重んじるから、会社の立場はあまり気にしないんだけど。
本当に好き嫌いでポジショントークしたり、論理的に装ったりする場合も多いから、イマイチ立場が判りづらい。
0510デフォルトの名無しさん
2011/11/25(金) 11:36:00.48ただ、感情的なものがあるとしたらコミュニティへの不信感はあらわにしてると思う。
仕様が複雑なものに柔軟性を加え用とすると、さらに仕様が複雑になって手に負えな
くなるというパターンは普通にあることだし、言ってることもわからないことではな
いかな。複雑にすればするほど、直交性も崩れやすいのも当然だしね。だから、
感情的なところと理性的な部分を含んだ内容と理解してるね。
つーのは、彼の挙げてる例とかコメント見る限りで、Scalaをほとんど使った事が無い事がわかるので。 状況証拠は大体揃ってて
(1) ++ が java.util.List#addAll() と同じだという初歩的な勘違い
Scalaを使ってプログラムしたことがあれば、この程度の勘違いをするはずが無い
(++ は immutable collectionの連結で、 java.util.List#addAll()は、mutable listへの要素の追加)
(2) List(1, "foo") の結果型が List[Any] でコンパイルエラーにならないのが問題だと言っている
コンパイルエラーが検出されるタイミングがずれるという意味では全く問題ではないとは言わないけど、
少なくとも安全性の面で問題は無い(mutable listに要素を追加するのと勘違いしているのだろうと推測)
(3) Scalaのフレキシブルな構文のせいでコンパイラが遅いと言っている
本当の理由は、implicit searchのコスト + コンパイラのパス数の多さ
彼は、パージングにかかる時間が一般にコンパイル時間の多くを占めていないということすら知らない
(4) Scalaが言語レベルでimmutablityを強制できていない(ので、並行プログラミングで問題だ)という事をことさら問題視している
実際には、たとえばActorでmutable objectをわざわざ渡す奴は居ないし、海外Scala MLでもその手のトラブルは聞いたことが無い
(5) 空想のScalaコミュニティに対して反発している
型理論とかを知らない奴をけなしている、などと言っているが、実際にはそのような人物はコミュニティではほとんど居ない。
むしろ、そういう質問があったら、積極的に答えようとする人が多い(多すぎるくらい)。つまり、実際のScalaコミュニティ(特に公式
MLなどでの経験があったわけではないのは、ほとんど確実)
(6) Scalaを使用した経験から批判してるのか、そうでないのか、どっち?という質問を全スルー。
他にも色々あるのだけど、この辺で。要はScalaをまるで知らないのに、一知半解どころか一知すら無い状態でこきおろしてる、ってのが一連の
ポストとコメントでわかったのが収穫かな。で、誠実な部分含めて、都合の悪い指摘全スルーしてる辺り、確信的にやってる(FUD)とやはり俺は思う
・実用的には重要な標準IOライブラリが中途半端なscala.ioしかない
・sbtという重要な基盤ツールの進化が速過ぎて、ドキュメントが追いついていない
・標準ライブラリのscaladocのドキュメンテーションコメントが少ない
・これは、コミュニティ内部でも問題視されてて、その結果、 http://docs.scala-lang.org/ が出来たわけだが。
・コンパイル遅い(sbtでだいぶ緩和される & 改善に向けて内部的にも色々進行中だけど)
・バージョン間バイナリ非互換性の問題(Typesafeが、この問題を解決するツールを開発してるみたいだが)
IDEはかなり良くなってきた(特にIntelliJは良い)ので、そっちの方の不満は少なくなってきたけど、もっと周辺ライブラリとの強調とか
標準IOライブラリへの取り組み(Scala-IOの支援とか)とかを積極的にやって欲しいな、という印象。言語自体は、もうちょい型推論
強化してくれたらな、というくらいで、不満はそれほど多く無いかな。
0513デフォルトの名無しさん
2011/11/25(金) 18:01:25.620514デフォルトの名無しさん
2011/11/25(金) 18:07:14.44一時的に増えるのは、お局様が新人に切れるのと似てるな。
0515デフォルトの名無しさん
2011/11/25(金) 18:33:08.63言語のことで、毛嫌いされてるといえば、lisperという立場から見ると
さんざんいろんな誤解を書き散らされてるけど、率直にいって、しゃーないなー
スルー。って感じが多いよ。中には、誤解に対して丁寧に答えてる人も
いるけど、よくあることさ。あんまり、FUDと捉えないほうがいいよ。
どんな話があっても流れてくる人はいるもんだ。
0516デフォルトの名無しさん
2011/11/25(金) 19:29:32.73作ってみたら?あるんだったら、そこに新たな質問と答を逐次追加し
ていけばいいしね。いつも丁寧に答えてたら、時間がいくらあっても
大変だろうし、水嶋さんは見る限り周囲の空気にはやや鈍感なのかも
しれないけど、聡明な方みたいだしね。その行動力はすごいと思って
見てるよ。でも、この性質は時々頭のよい人に見られるものだからな。
それを、より建設的な方向に利用すればいいってことだと思う。あなた
位ならば、すでに、どこがよく誤解されやすくって、その誤解をどう
説明するかは察しがついてると思うんだよね。
FAQもどんな形式が読み手が楽かとなると1問1答1ページ+目次のほ
うが余裕があるかも。
0517デフォルトの名無しさん
2011/11/25(金) 19:35:34.58と見てたらいいし、乗り込んで丁寧に答えるような労力もつかわなくても
よくできると思うよ。
いちいち論戦したり答えたりするより、言語を使ってこんなこともあんなことも
そんなこともできるって示していったほうが、腕利きさんのセンスを持った
人を獲得しやすいんじゃないかなと思うよ。
長くなったけど、ほな頑張ってね〜
なるほど。少なくとも、FUDというワードを使うのは議論をややこしくする可能性が高いので、避けるべきかもしれない。
ただ、今回の場合は色々反論があった(自分は何もしていないというかコメント欄で馬脚を現しただけだが)おかげで、
彼の批判が実経験に基づかない空想上のものである事が明らかになったわけで、まあ反論することにも意義は
あるかなと。自分の質問へのレスポンス
http://blog.joda.org/2011/11/scala-ejb-2-feedback.html?showComment=1322218727885#c5182138328634130006
で、結局、彼は「俺はScalaの経験はほとんど無いが、Scalaが駄目だって事を判断できる(キリッ」とか言ってるだけの人
だって事が確定したので、もう怒る気持ちすら失せて呆れてる段階だけど。
>>516
ちょっと今回は色々大人げ無くて、みっとも無かったかもしれませんが、丁寧なアドバイスありがとうございます。
よくある誤解に関するFAQについては、仰る通りそろそろ用意すべきときかもしれませんね。
また、FAQの形式に関しても、1問1答1ページ+目次という構成は良さそうですね。その辺り含めて、
ちょっと検討してみます。
ちなみに、おっしゃる通り、自分はかなり空気が読めない方です(という自覚はあります)。聡明かどうかは自分では
どうにも判断できないですが。で、自分が聡明かはともかく、これまでのTwitterでのbot活動wによって、大量の疑問点に
対するリプライの蓄積があるので(twilogで読めます)、ある程度誤解やハマりパターンの傾向は把握している感じです。
>>517
応援ありがとうございます。確かに、誤解 or 曲解に対して、乗り込んで論戦するとかは結構労力使う
割に得るものが少ないという意味で、費用対効果が悪いですね。>>516さんのリプライでも書きましたが、
FAQをちょっとずつ書き溜めていきます。あとは、本家Scalaコミュニティに対してもっと貢献していきたい
ですね。今年になってからあまりバグレポートもできていないので。
0519デフォルトの名無しさん
2011/11/26(土) 10:50:28.500520デフォルトの名無しさん
2011/11/26(土) 11:35:53.85まぎれも無い事実
0521デフォルトの名無しさん
2011/11/26(土) 14:09:33.31なんで、わざわざScalaのスレにきて、粘着するんだろうね?彼は。
>516とか>517
は自分も同意です。
>誤解 or 曲解に対して、乗り込んで論戦するとかは結構労力使う
>割に得るものが少ないという意味で、費用対効果が悪いですね。
見る側にとっても、この手の議論に飽きてきたところ。
章立てとかいらないから、どっかにFAQでまとめといて、って感じ。
そんなことより、Scalaの事例を増やしたいなあ。
最近だと、C#とかは Kinectやりたいって理由だけで C#人口増えている。
Scalaもそういうキラーアプリがないかなあ。
他、日常業務スクリプト集 とかあったらうれしい。本でたら買う。
0522デフォルトの名無しさん
2011/11/26(土) 14:29:50.70まぎれも無い事実
0523デフォルトの名無しさん
2011/11/26(土) 14:53:29.60対抗してQUMA用API充実させるとか?
0524デフォルトの名無しさん
2011/11/26(土) 15:36:43.61第二回Scala会議で、その辺りについてちょっと発表できるかもです>FAQでまとめ
Scala事例に関しては、国内だと細々とした利用は増えてるのですが、キラーアプリ
というのはまだ不在ですね。Play 2.0がTypesafe Stackのインストーラに統合される予定
なので、今までよりWebアプリをScalaで作りやすくはなるかもしれません。
>>524
.net実装自体はexperimentalですが既に動かせます。
http://lamp.epfl.ch/~magarcia/ScalaNET/2011Q2/PreviewScalaNET.pdf
にやり方が書いてあるので、参考までに。ちなみに、昔のScalaの.NET実装と違い、
今回復活したのはIKVMのランタイムを利用したものになっているため、手順が違うことに注意してください。
0526デフォルトの名無しさん
2011/11/26(土) 16:27:50.38なんで他の言語と同じように推測してくれないんだよ!
誰か、俺があきらめがつくように、型推定できない最小の反例を見せてくれ!
引数と返値の2パターンでよろしく。あとゴルフでな。
0527デフォルトの名無しさん
2011/11/26(土) 22:35:27.03とか
0528デフォルトの名無しさん
2011/11/26(土) 23:26:50.27そうそう、その問題も。
なんで他の関数型ではできるそれが、Scalaでは許されないようにデザインされたのか?も知りたい。
まず、Scalaでは許されないようにデザインされた、というのは順序が逆、ということを念頭においてください。
ScalaはJavaの型システムをリファクタリングした上で拡張するという既定路線があって、その制約の元で
どこまで型推論できるのか、というのが問題になるわけです。
さて、
def f(x,y) = x + y
相当の関数が、何故ML系の言語では完全に推論できるのに、Scalaでは無理かというと、まず、"+"演算子の意味するところが
違うからです。たとえば、OCamlなら (+) の型は int -> int -> int なので、そこから x が Int, y がIntである事を容易に
推定することが(人力でも)できます。
一方で、Scalaでは、
def f(x,y) = x + y
における + は 式 x をレシーバとしたメソッド呼び出し (引数はy) になります。この時点でまず、+の型が不明である事に注意して
ください。この時点で、fは多相関数として推論しなければいけません(たとえば、Int同士の+だとみなすと、他の型に適用できなくなる)。
さて、この定義のx, yおよび x + y にどのような型を割り当てるべきでしょうか?
ひとつの方法として、
def f[T <: { def +(other: T): T }](x: T, y: T) = x + y
という方向が考えられます。しかし、以下のように別の推論を行うことも可能です。
def f[T <: { def +[U >: T](other: U): U }](x: T, y: U) = x + y
さて、このどちら(他の推論候補もありますが、とりあえず2種類で考えて見ます)。少し考えればわかるのですが、
これはどちらが正解である(より一般的な型を推論している)とも言うことができません。MLのHM型システムの
元では、一切の型注釈無しに、完全かつ健全に、関数の「もっとも一般的な型」を推論できる事が保証されて
いますが、Scalaの型システム上では、それは「原理的に」無理なようになっています。この辺りはScalaが
サブタイピングを持っている事などと関係があるのですが、その辺りは長くなるのでこの辺りで。
def f[T <: { def +(other: T): T }](x: T, y: T) = x + y
というScalaの関数を定義してみましたが、現在のScalaのstructural typeの実装制約上、これはコンパイルを通りません。
通りませんが、この制約が緩められて、上のように書けたとしても、Scalaの型システム上での型推論は単純なものですら
かなり難しくなりえます。
0531デフォルトの名無しさん
2011/11/27(日) 00:06:56.06> eclipseでScalaとJavaを同一プロジェクトに共存させることはできます(というかそれをするために、JDTがまともな拡張ポイントを提供してくれてない
> せいで、ScalaのEclipseプラグインはかなり苦労してます)。単に、Javaパッケージ下に.scalaファイル置けばそれでOKです。
これ、scalaプロジェクトの下にJavaパッケージ作って、その下にJavaクラスを置いたのでは駄目なんだね。
scalaソースからJavaパッケージのJavaクラスを参照しても見つけてくれない。
うーん。こちらの環境では、その方法で普通に使えましたけど…。ひょっとして、JavaエディタからScalaオブジェクトのメソッド
補完などが効きにくい事を仰っている?
0533デフォルトの名無しさん
2011/11/27(日) 08:06:48.58いや、コンパイルエラー(エディタ上でエラーマーカーがつく)になります。
きっと微妙な落とし穴があるのでしょう。
scalaプラグインの完成度は余り高くないので。
0534デフォルトの名無しさん
2011/11/27(日) 08:48:59.45ありがと!
>> 529
前者のfと後者のfを比べると、「より一般的な型を推論している」という
意味では、明らかに後者の方がより一般的だけど?
それとも「一般的な型」の意味に齟齬がある?
日本語だと曖昧になるなら英語でも大丈夫すよ。
さらに、一般的な型という意味なら、こちらの方が。
def f[T <: { def +[U,V](other: U): V }](x: T, y: U) = x + y
これでFAでいいじゃん。
でも、Scalaはこれは許されないし、
許さないようにしているのは理由があるんだよね?それが知りたい。
>> 530
> Scalaの型システム上での型推論は単純なものですらかなり難しくなりえます。
そりゃ、探索空間が増えるから、比較すると難しいのは自明だけど、
「かなり」って主観的だし、もう一声!
実際のところ、どれくらい難しいの?
(a) 一般的なコーディングでも推論不可能なケースが多い
(b) 一般的なコーディングでは推論不可能なケースはまれだが存在する
(c) すべての推論可能だけどコンパイラ性能的に計算量が実用的でない
(d) すべての推論可能だけどコンパイルが実用範囲内で遅くなる
(e) すべての推論可能でコンパイル時間も問題無し
0535(1) ◆CgacaMDhSQ
2011/11/27(日) 10:19:16.01おそらく、「より一般的な型を推論している」という言葉の使い方に齟齬があるかと思います
ここで、自分が「より一般的である」といっているのはメソッドシグニチャの包含関係がある
かどうかをさしています。
たとえば、次のfの推論と
(1) def f1(x: Int, y: Int): Int = x + y
以下の多相的なfの推論を比較したとき、
(2) def f2[T <: { def +(other: T): T }](x: T, y: T): X = x + y
(2)は(1)に比べて、「より一般的な型」を推論しているといえます。これは、
全ての式 x: X, y: Y について、f1(x, y) が型チェックを通るならば、f2(x, y) も型チェックを通るからです。
さて、次に
(3) def f3[T <: { def +[U >: T](other: U): U }](x: T, y: U) = x + y
と(2)を同様に比較してみます。結論から言うと、(2)では型チェックを通るが、(3)では
型チェックを通らない例が存在します。たとえば、x: Int, y: Intのとき、
f2(x, y) は 型チェックを通りますが、 f3(x, y) は型チェックを通りません。この理由は、必要であれば別のレスで述べますが、
ともあれそのような意味で、(3)は(2)より「一般的ではない」という事ができます。ここで、HM型システム
の元では、型付け可能な関数について、かならず「もっとも一般的な型」(principal typeと呼ばれます)
を推論することができる事が保証されており、推論結果の「正しさ」が保証されます。しかし、Scalaの
型システムではprincipal typeが存在しないので、そのような保証がありません。
0536(2) ◆CgacaMDhSQ
2011/11/27(日) 10:28:15.64> 実際のところ、どれくらい難しいの?
前提として、推論が可能かと言えば「可能」です(推論結果の正しさや実用性を問わなければ)。
しかし、仰っているのは、そのような型推論システムでは無いでしょうから、それを前提
として答えると、答えは (a) になります。実際のところ、もうちょっと答えは複雑で、principal type
は推論できないけど、「大体のケースで正しくなりそうな」型推論を多くのケースで行えるアルゴリズムを
Scala上の型システムに構築できる可能性はあります。しかし、仮にできたとしても、それは理論上の
保証が無い(少なくとも簡単に保証できない)ので、HM型システムの型推論のような「安心感」を得ることは
できないでしょう。
0537デフォルトの名無しさん
2011/11/27(日) 10:59:10.98> 必要であれば別のレスで述べますが、
ぷりーず。そこが議論の本質な気がする。
あと、(2)と(3)はそれで正しい?
おーけーです。これから述べます。の前に
> あと、(2)と(3)はそれで正しい?
はい。それで正しいです(少なくともScalaにおいて) 。
さて、その理由が議論の本質、ということなので以下に理由を述べます。先ほどは、
> (3) def f3[T <: { def +[U >: T](other: U): U }](x: T, y: U) = x + y
に対して、f3(100, 200) のような式が型チェックを通らないということを書きました。
ここで、問題になるのは、Intの+のシグニチャが(オーバーロードバージョンを無視したとして)、
(Int)Int
であるのに対して、(3)で、structural typeによって要求されているシグニチャは
[U >: T](U)U
であることです(ちなみに、これはScalaにおける「メソッド型」の表記法です)。この二つの
メソッドシグニチャ(というより、非ジェネリックメソッドとジェネリックメソッド一般に)には
互換性が無いので、型チェックを通りません。一方、(2)の場合、structural typeによって要求されるシグニチャは
(T)T
になります。ポイントは、(2)の場合、「+そのもの」は多相メソッドではないので、T = Intとしてインスタンス化されている
場合、
(Int)Int
になり、(1)のケースを包含することです。長くなりましたが、一言で理由を述べるなら、「非多相メソッド」と「多相メソッド」の
シグニチャの間には互換性が成立しない、ということが根本的な問題です。
0539デフォルトの名無しさん
2011/11/27(日) 13:41:49.74ナイトリービルドやRCを使ってるから違うかも。
それからプロジェクトのクリーンで再ビルドすると見えるようになることもある。
0540デフォルトの名無しさん
2011/11/27(日) 17:49:58.02ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/script-lang
読んでみたらいいよ。
0541デフォルトの名無しさん
2011/11/27(日) 21:06:15.99もくじ付けて
0542デフォルトの名無しさん
2011/11/28(月) 12:21:00.07http://www.infoq.com/jp/news/2011/11/scala-ejb2
0543デフォルトの名無しさん
2011/11/28(月) 12:40:50.00他はまぁうん、問題提起としてはいいんじゃないかというのが初心者の俺の感想。
0544デフォルトの名無しさん
2011/11/28(月) 13:05:42.25関数型言語として一番最初にscalaに遭遇すると、型宣言の仰々しさを
一番感じて、敬遠するだろう。これが型システムの複雑さなんだが、
適当な例は少し上の水嶋さんのコメントからも分かるだろう。
この複雑さが初めての人にとって静的型付け関数言語ってと頭の中で
一般化してしまうことがある。(どれだけかわからない。)→静的型
付け関数型はとても複雑で、頭のいい人しかわからない。使えない。
→他人との話題でそんな話になる。→静的型付け関数型の評判が落ち
る。という流れになることを指してる<その論理。
関数型を学習するのにscalaからはいるのは不適当だとは思うが、ここ
の人の多くは異論を持つだろう。
scalaの作者ってむかしpizzaって言語を作ってたんだね?Haskellの
本を読んで知った。
0545デフォルトの名無しさん
2011/11/28(月) 13:44:25.760546デフォルトの名無しさん
2011/11/28(月) 13:52:46.07強い静的な関数型の入門はOCamlがいいんではなかろうか。
ちなみにJavaは全くできない。
0547デフォルトの名無しさん
2011/11/28(月) 20:57:36.17そんなこと言ってるから複雑だとかコミュニティがとかになるんだろ
0548デフォルトの名無しさん
2011/11/28(月) 21:48:07.58関数型を学ぶなら専用の関数型言語で学んだほうがいいって言ってるだけなんだけどな
Scalaの標準ライブラリのソースは関数型っぽく書かれてないしね
0549デフォルトの名無しさん
2011/11/28(月) 22:28:09.07http://www.infoq.com/jp/news/2011/11/scala-ejb2
0550デフォルトの名無しさん
2011/11/28(月) 22:29:28.200551デフォルトの名無しさん
2011/11/28(月) 23:09:26.990552デフォルトの名無しさん
2011/11/28(月) 23:20:14.59また、いつもの粘着野郎かな?
言語の比較の話はもう飽きた。
そんなことより、おまいら、Scalaで何作る?
0553デフォルトの名無しさん
2011/11/28(月) 23:28:09.36groovy(ほか) ←→ clojure
==================
java → C#-like
==================
scala
==================
sml/haskell-like
0554デフォルトの名無しさん
2011/11/29(火) 09:11:36.22これ読んだら別にscalaじゃなくても
javaのままでいいや
と思ってしまう。
0555デフォルトの名無しさん
2011/11/29(火) 10:31:57.570556デフォルトの名無しさん
2011/11/29(火) 11:27:53.35結局商用とかでつかわれない
趣味レベルだし、
やがてjavaでもできるようになる
機能しかもってないから
javaのみに注力すればよいのでは?
0557デフォルトの名無しさん
2011/11/29(火) 12:00:34.810558デフォルトの名無しさん
2011/11/29(火) 14:26:00.92釣りかもしれないけど
勉強したいけど時間を無駄にしたくないだけだよ。優先度を考えてるだけ。
どうせ勉強するなら実用的で
業務にもつかえるものにしたい。
でも既存の技術にしがみつかないで
将来有効な技術なら勉強したい。
1997年くらいにjavaを勉強
しはじめて後悔してない。
Androidの公式開発にもつかえるし
サーバサイトのデファクトだ。
15年後scalaがそのような地位を
気づけているか気にしてるだけだよ。
0559デフォルトの名無しさん
2011/11/29(火) 14:31:26.420560デフォルトの名無しさん
2011/11/29(火) 14:43:22.350561デフォルトの名無しさん
2011/11/29(火) 14:56:59.72558さんが15年後でもscalaおkって感じ取れたらまたこのスレに遊びにきてねー
0562デフォルトの名無しさん
2011/11/29(火) 15:39:37.96実用という言葉ってけっこうマジックだからなぁ。
基礎を強くしようとしてる人は、いわゆる 土方への道は進まなくてもいいけど
基礎がない人は 。。。 ね。この話しとは違うことだけど。
scalaが15年後どうなるかって?ちょっと考えてみればいいよ。あれだけ、
複雑な仕様だってことを考えると、5年先には別のものがはやってると考
えてしまうよね。今がピークで2,3年で傾くように思うよ。
現に、javavmのライバルは増えてる。
むしろ、変化についていけるようにしておくほうが賢そうに思うけどな。
言語なんて、似たものが増えた所で学習コストは余り変わらないのでね。
Lisp族、CやJava族、ML族 この辺をおさえておいたらどれでもこいにな
れるだろう。
15年後はまさかのSmalltalkの天下だったりしてな。もともと近未来
志向言語だったからな。
0563デフォルトの名無しさん
2011/11/29(火) 15:54:37.550564デフォルトの名無しさん
2011/11/29(火) 16:02:15.66おまえら強がってるけど
結局scalaはそのうち廃れるんじゃね?
ってのには反論できねーんだな。
廃れるかもしれないけどそんなの
わかんないじゃんみたいな思考停止が招いた事故
0565デフォルトの名無しさん
2011/11/29(火) 16:07:48.72仕事で使えるかもしれない関数型言語というのは大きい
0566デフォルトの名無しさん
2011/11/29(火) 16:20:41.01その中にscalaも混ぜておくとおもしろいと思うわー
0567デフォルトの名無しさん
2011/11/29(火) 16:44:09.05それがね。。。基礎云々と言った理由なんだよ。動的の他の言語やるにしても
その他にしても、多くのアイデアや技術は、そこから流れてくるから新言語で
突拍子もなく新しいものを触るより学習を助けるってことからなんだよ。「
あっ、あの考えを使ってるのか。」ってわけ。
多分、scalaを触り続けて、scalaの複雑さに苛立った人が、また別の言語
を作るみたいなながれになるような気もする。scala△ だとか w 出てく
るかも。
scalaはここ2,3年が勝負さ。その間にキラーを作って無いとね。頑張り
なよscalaの諸君!
0568デフォルトの名無しさん
2011/11/29(火) 16:52:35.95ちょっと何を言ってるのかわからないけど、
Scalaをやってる人が他の言語を知らないという前提なら間違っていると思うが
0569デフォルトの名無しさん
2011/11/29(火) 16:58:03.900570デフォルトの名無しさん
2011/11/29(火) 19:04:55.820571デフォルトの名無しさん
2011/11/29(火) 19:12:23.850572デフォルトの名無しさん
2011/11/29(火) 19:15:20.250573デフォルトの名無しさん
2011/11/29(火) 19:17:49.27変身願望なのかな、これって。
0574デフォルトの名無しさん
2011/11/29(火) 20:42:35.54もっとJavaっぽい言語に偽装して騙す感じでマーケティングして欲しい
0575デフォルトの名無しさん
2011/11/29(火) 21:44:17.15>>538
(T)T が (Int)Int を包含するのは異論なし。
しかし、[U >: T](U)U が (Int)Int を包含しないのは納得いかない。
> 長くなりましたが、一言で理由を述べるなら、「非多相メソッド」と「多相
> メソッド」のシグニチャの間には互換性が成立しない、ということが根本的
> な問題です。
(T)T と [U >: T](U)U が互換性が無いのも異論なし。
だって [U >: T](U)U ⊇ (T)T なのは自明だから。
んで、(T)T ⊇ Int(Int) なのだから、
[U >: T](U)U ⊇ (T)T ⊇ Int(Int) になるよね。
だから、[U >: T](U)U は (Int)Int を包含するじゃん?
あと、もう一度聞くけど、>>535の(2)と(3)はそれで正しい?
大文字のXが未定義とか、Uが[]の中に含まれていないとか、
Scalaは+メソッドに交換法則を強制していないから
def f[T <: { def +[U,V](other: U): V }, U, V](x: T, y: U) = x + y
の方が一般的とか、気になる点が3点もあるんだけれど。
0576デフォルトの名無しさん
2011/11/29(火) 22:28:34.020577デフォルトの名無しさん
2011/11/29(火) 23:08:12.48水嶋さんはこういうネチネチした議論大好物だよ
0578デフォルトの名無しさん
2011/11/30(水) 00:06:09.22それを避けて陰口を叩くだけの人多いけどな。
疑問にお答えする前に、まずは私のミスについて訂正を
> 大文字のXが未定義とか、Uが[]の中に含まれていないとか、
これは自分の単純ミスですね。確認が不足していて申し訳ないです。
正しくは、
(2) def f2[T <: { def +(other: T): T }](x: T, y: T): T = x + y
(3) def f3[T <: { def +[U >: T](other: U): U }](x: T, y: T) = x + y
です。ご指摘ありがとうございます((2)は、そもそも現在のscalaではどの道コンパイルを通らないですが)。
> (T)T と [U >: T](U)U が互換性が無いのも異論なし。
> だって [U >: T](U)U ⊇ (T)T なのは自明だから。
「 [U >: T](U)U ⊇ (T)T」という前提に問題があります。これは全く自明では無いどころか、
「 [U >: T](U)U ⊇ (T)T」は一般に成立しません。ここで、TがUと同様に多相的っぽく見えるから
話がややこしくなるので、T に Int を代入して(インスタンス化して)考えてみます。すると、
[U >: Int](U)U ⊇ (Int)Int が成り立つか、という話になります(Uはメソッド適用までインスタンス
化されない点が重要です)。で、おそらくおわかりかと思うのですが、これは成り立ちません
(リスコフの置換原則を思い出してください)。というわけで、それを前提にした
> だから、[U >: T](U)U は (Int)Int を包含するじゃん?
という結論も正しくありません。とりあえず、また疑問があれば言ってくださればと思います。
なお、
> def f[T <: { def +[U,V](other: U): V }, U, V](x: T, y: U) = x + y
の方が一般的というのは、技術的に誤りです。説明が若干ややこしいので、
一般的だと考えられた根拠を述べていただけると解説しやすくなります。
0580デフォルトの名無しさん
2011/11/30(水) 00:18:14.17そのように評価していただけるのはありがたいのですが、真実は
>>577が近いです。ねちっこいかどうかはともかく、技術的な議論自体が好物なのは確かなので。
ちなみに、あえて訂正しなかったのですが、s/嶋/島/です。いや、別に不快なわけではないのすが。
0582デフォルトの名無しさん
2011/11/30(水) 00:51:28.65とりあえず、10月ころのScalaのアップデートのスライドをたまたまWebで見たけど、
あれ、なかなか良かったです。
結局、プログラム言語の良し悪しは、どんだけその言語を使う人が居るか、プログラマーの数って重要だと思う。
プログラマーが増えるには、最近では、ライブラリーとか使用例とか、ググったらやりたいことが見つかるか
とかそういうのが重要。
Scalaでググると、言語の話ばっかりなのが、最近、飽き飽きしてきた。
Scalaは、まだまだ基本ライブラリが足りないよね。。
ちょっと今、CSVからデータ抜き出す方法をしらべてて、
たまたま次のページ見たのだけど、RubyやGroobyに比べて、ちょっと面倒なのが残念。
http://d.hatena.ne.jp/fits/20101129/1291043635
> あれ、なかなか良かったです。
関数プログラミングの集いの時のやつでしょうか?そう言っていただけるとありがたいです。
> Scalaでググると、言語の話ばっかり
海外を見渡すと、色々新しいフレームワークの話とか話題になってたりするんですが、国内だと
まだ言語の話が多いですね…
> プログラマーが増えるには、最近では、ライブラリーとか使用例とか、ググったらやりたいことが見つかるか
> とかそういうのが重要。
> (snip)
> Scalaは、まだまだ基本ライブラリが足りないよね。。
賛成です。Scalaは、標準ライブラリがあまりにも偏っている点が「実用的な」問題だと考えています。
# 特に、よく書いてますが、腐ったscala.ioはなんとかならないものかと思っています。Scala-IOは
# いつ取り込まれるのかわからんですし…
で、(本家) Scalaのコミュニティの問題の一つは、そういう実用的なライブラリを標準に取り込む動きが
遅い点にあるのではないかと。言語としてはともかく、そういう標準ライブラリの取り込みに
関してはGroovyの方が先に行っている印象です。
0584デフォルトの名無しさん
2011/11/30(水) 01:40:10.270585デフォルトの名無しさん
2011/11/30(水) 02:21:38.85もっとも、最近のMITのオープンクラスを眺めてみれば、
RoRを使ってウェブアプリ作る講義があったりで、
黒板に書かれる言語すらも徐々に変化しているみたいだわ
ソフトウェアに永遠の命なんて戯けたことを抜かすなら、
FSFの信仰者になってGPLでソフトウェアを配布するしかないぞ
0586デフォルトの名無しさん
2011/11/30(水) 02:32:51.750587デフォルトの名無しさん
2011/11/30(水) 02:35:24.42ScalaよりJVMの寿命を心配したほうが良さそうだ
0588デフォルトの名無しさん
2011/11/30(水) 12:38:13.26Delphiの寿命は長かったといえる?
0589デフォルトの名無しさん
2011/11/30(水) 16:28:59.72理由とかはまだ調べられてないけど。
0590デフォルトの名無しさん
2011/11/30(水) 16:41:26.98>>590のURLと一緒に、その背景
http://codahale.com/the-rest-of-the-story/
も読むといいかもです。わかりやすいように時系列で整理すると、
(1) Yammerのエンジニアの人(@coda)が、昔の同僚(Twitter時代)に、Scalaの一部をJavaに置き換えてるとメンション飛ばす
(2) それを見た Donald Fischer (現Typesafe CEO。 Odersky先生は現在チーフアーキテクト) が、数日語、@codaに、詳細を聞きたい
旨のメール出す(CCにOdersky先生が入っていた)
(3) @codaは、Scalaの改善に関われる中心的な人物がそういうメールを送ってきた、ということで、Scalaの経験からどんな問題があった
かを Donald Fischer にリプライ(CC: Odersky)。このやり取りはprivateなものだった。
(4) @codaは、e-mailのドラフトをgistに置いていたので、それがHacker NewsやTwitterに流出
(5) しまった、と気づいた@codaがあわててgistを削除するも時既に遅く、publicに
(6) @jodastephen はそれが流出したものだという事を知らずにYammerが公式にアナウンスしたとブログに掲載
(7) @coda -> @jodastephen 「ちょw それ、Yammerの公式アナウンスじゃなくて、それ、俺の個人的見解だから」
(8) @jodastephen のポストの影響でTwitterなどあちこちでその話が飛び交う
(9) @code が http://codahale.com/downloads/email-to-donald.txt のコンテキストを釈明 (イマココ)
に書かれている事自体は(書かれたコンテキストを踏まえる必要があるにせよ) @jodastephen
の記事とは異なり、読む価値があると思います。私が彼のメールで特に重要だと思ったのは
(a) Scalaの学習曲線の問題(特に、チームメンバにどうやってScalaのコンセプトを教育するか)
(b) sbt 0.7系 -> sbt 0.10移行に伴う問題
(b) Scalaのバージョン間のバイナリ非互換性問題
辺りでしょうか。彼自身がそれほど重要な問題ではない、と書いている通り、scala.collection.{mutable, immutable}
がどうとかの話は、まあパフォーマンス特性を踏まえてコレクションを使いましょうね、という話で、場合によっては
彼の書いたような指針に従ってチューニングするのもありかもしれませんが、Scalaに関する一般論としてはあまり
重要ではないでしょう。
ただ、私も原文読んだ中から、特に重要だと思った部分を抜き出しただけなので、実際の所は原文読んだ方がよかろうと思います。
0593デフォルトの名無しさん
2011/11/30(水) 22:14:03.980594デフォルトの名無しさん
2011/11/30(水) 22:16:13.040595デフォルトの名無しさん
2011/11/30(水) 23:18:26.31コミュニティの話については、まあ、scalazコミュニティの一部の人とOdersky先生がひと悶着あったとか
そういう事実はあったりします。scalaz自体は私は好きなんですが、過激な人が一部に居るという話はあって、
そういう人の声が目立ってしまうという側面はありますね…。
ちなみに、パフォーマンスについて言えば、端的に@codaのやり方はエンジニアリング的に(Scala以前の問題で)
間違っているんじゃ?というのが正直な感想です。実際、java.util.HashMapよりscala.collection.mutable.HashMap
が遅いという事実は正しいです。が、実測してみればわかるように、実際には最大で3倍くらいの差で(OpenHashMapだと
java.util.HashMapとほぼ同じ速度だったりする)、チューニングする必要があるとして、パフォーマンスにクリティカルな部分
のみを置き換えるというアプローチが技術的には正しいでしょう(それよりはるかに遅いLL言語のいわゆる「ハッシュ」が
普通に使われている事を考えてください)。ボトルネックを考えずに片っ端からwhileに置き換えるとかそういうチューニングする
ルールを導入するのは、あまり筋が良いとは言えないです。これは、技術的な観点からの感想で、YammerがJavaに
戻した事についてどうこう言うつもりは無いですが。
この辺りのチューニングの話については、現Typesafe(元Google)のJosh Suerethのブログ記事
「Macro vs. Micro Optimisation」
http://suereth.blogspot.com/2011/11/macro-vs-micro-optimisation.html
が参考になるかと。
0597デフォルトの名無しさん
2011/12/01(木) 03:48:30.31自信無くすぜ
0598デフォルトの名無しさん
2011/12/01(木) 04:54:40.41キャッシュミスとか取れないし。
eclipseよりNETBeansの方がまだましか。
0599デフォルトの名無しさん
2011/12/01(木) 09:47:56.93なーにが自信だw
このアマチュアがw
0600デフォルトの名無しさん
2011/12/01(木) 11:08:53.39おまえ最低なやつだな。最低だ。
0601デフォルトの名無しさん
2011/12/01(木) 12:23:04.34学習曲線や効率のいい資料の探し方は重要かも。
0602デフォルトの名無しさん
2011/12/01(木) 14:40:14.480603デフォルトの名無しさん
2011/12/01(木) 15:20:16.70「良い」の定義にもよるが。
0604デフォルトの名無しさん
2011/12/01(木) 16:10:15.69一昔前のスマホ持ってるアピールみたいですね!
0605デフォルトの名無しさん
2011/12/01(木) 17:25:48.48三年くらいScalaやってるのに一向に職が見つからないのだが
0606デフォルトの名無しさん
2011/12/01(木) 18:44:26.060607デフォルトの名無しさん
2011/12/01(木) 20:59:44.57なるところではあるが、マイナーだからいろいろまだ足りないんだろうな
0608デフォルトの名無しさん
2011/12/01(木) 21:01:55.18つ 現実
http://www.dreamnews.jp/?action_Image=1&p=0000027847&id=bodyimage1
0609デフォルトの名無しさん
2011/12/01(木) 21:10:31.280610デフォルトの名無しさん
2011/12/01(木) 21:16:40.93メーカー中心だし給料良さそう
0611デフォルトの名無しさん
2011/12/02(金) 05:36:56.16> [U >: Int](U)U ⊇ (Int)Int が成り立つか、という話になります(Uはメソッド
> 適用までインスタンス化されない点が重要です)。で、おそらくおわかりかと思う
> のですが、これは成り立ちません(リスコフの置換原則を思い出してください)。
なるほど。齟齬の原因が判った。
(a) [U >: Int] (U)U で表現可能な関数型の集合には(Int)Intを含む
(b) [U >: Int] (U)U で表現可能な関数型の集合には(Int)Intを受理しないものがある
は両方とも真。
俺は(a)を指して [U >: Int] (U)U ⊇ (Int)Int が成り立つと言っているのだが、
◆CgacaMDhSQさんは(b)を指して [U >: Int] (U)U ⊇ (Int)Int が
成り立たないと書いているらしい。つまり、[U >: Int] (U)U は (Int)Int の
Liskov substituion principleにおけるsubtypeではないことを書いているのだろう。
それには異論無し。
俺ならtype orderを表す時は⊇でなく≧を使うので、混乱した。申し訳ない。
齟齬が生じた原因は、想定した型推論のアプローチの違いだろう。
俺が想定していたのは、Cartesian Product Algorithm (CPA)のような、解候補集合の
うち制約充足解を選び出すconstraint-based analysisの方。だから、解は多数の
型の集合の中から制約で1つに絞れればいい。なので、(a)でOKという立場。
◆CgacaMDhSQさんはprincipal typeをunification-basedで求めたいので、
(ひとつの)解候補が無矛盾かどうかが興味の対象だと推測する。
だから、(b)なのでダメという立場。(正しい?)
ちなみに、constraint-based analysisアプローチは、
Demand-Driven Analysis with Goal Pruning (DDP)の提案者が
現在Scalaに適用チャレンジ中とのこと。
それ以上は知らないので、詳しい人がいたら教えてほしい。
0612デフォルトの名無しさん
2011/12/02(金) 05:44:33.60長いので分割。
> > def f[T <: { def +[U,V](other: U): V }, U, V](x: T, y: U) = x + y
> の方が一般的というのは、技術的に誤りです。説明が若干ややこしいので、
> 一般的だと考えられた根拠を述べていただけると解説しやすくなります。
「一般的かどうか」については>>611で齟齬があったことが判ったので、落着。
残る点は、クラスAに、型(B)Cの+メソッドがあったとして、
def f(x, y) = x + y
というfの定義があって、これが
f(new A, new B)
を受理するためには、xとyが同じ型である訳にはいかないよね、
という単純な話。
# Scalaの言語仕様では、+には結合優先順序しか規定されていないから、
# 交換則などが利用できず、型推論には不利だよなあ。
> ◆CgacaMDhSQさんは(b)を指して [U >: Int] (U)U ⊇ (Int)Int が
> 成り立たないと書いているらしい。つまり、[U >: Int] (U)U は (Int)Int の
> Liskov substituion principleにおけるsubtypeではないことを書いているのだろう。はい。その通りです。
はい。それを意図していました。
> 俺ならtype orderを表す時は⊇でなく≧を使うので、混乱した。申し訳ない。
あー。なるほど。なんで、⊇使うんだろ…とか思いつつ、議論進めてたのがまずかったですね。
こちらも、その辺りについては意識を合わせておくべきでした。
> 齟齬が生じた原因は、想定した型推論のアプローチの違いだろう。
> ◆CgacaMDhSQさんはprincipal typeをunification-basedで求めたいので、
> (ひとつの)解候補が無矛盾かどうかが興味の対象だと推測する。
> だから、(b)なのでダメという立場。(正しい?)
正しいです。まさにprincipal typeを(unification-basedなアプローチで)求めようとすると、
Scalaの型システムだと死ねる、というのが私の言いたかったことです。
> ちなみに、constraint-based analysisアプローチは、
> Demand-Driven Analysis with Goal Pruning (DDP)の提案者が
> 現在Scalaに適用チャレンジ中とのこと。
おお。それは興味深い情報です。ちょっと調べてみます。
ところで、今更なんですが、その辺りのバックグラウンドをお持ちであったわけですし、
それを最初に明かしていただけたら、議論に齟齬が生じにくくて良かったと思います。
初学者の方が相手なのか、私などの門外漢よりも詳しい方 (:- が相手なのかによって
説明の仕方も自ずと異なってくると思いますし。
> を受理するためには、xとyが同じ型である訳にはいかないよね、
> という単純な話。
理解しました。
ちなみに、#コメントについてですが、SMLやOCaml、Haskellの言語でも、一般に2項演算子の交換則
などは仕様レベルの規定は無かったように記憶しています(つまり、conventionとしてそういうのが
存在するだけ)。
0615デフォルトの名無しさん
2011/12/02(金) 12:21:03.40http://www.ibm.com/developerworks/jp/opensource/library/os-spark/
0616デフォルトの名無しさん
2011/12/03(土) 00:48:38.13おお、こういうScalaで実装したライブラリが増えてくると、Scala言語も安泰だよね。
ところで、これって、個人で使って面白いもの? それともやっぱ企業の大規模プロジェクトで使うもの?
0617デフォルトの名無しさん
2011/12/03(土) 01:16:55.03以前、ScalaのIO周りが未整備な点について弱点として挙げてたけど、
Scalaの特性を生かした感じでIOのAPIを作るとしたら、どんな方式があると思います?
(サードパーティで既にある、とかいうオチでも良いです)
0618デフォルトの名無しさん
2011/12/03(土) 03:30:54.84https://github.com/scala-incubator
0619デフォルトの名無しさん
2011/12/03(土) 04:24:14.32これ、さっぱり更新されてないんだけど、大丈夫なの?
標準に入るって噂だったけど、なくなったの?
0620デフォルトの名無しさん
2011/12/03(土) 04:39:18.57https://github.com/jesseeichar/scala-io
私自身のもくろみは実はまた別にあるのですが、時間がなくてほとんど動けていないので、現在は
Scala-IO https://github.com/jesseeichar/scala-io
を使っています。これは、scala.ioと違ってバイト列の読み書きを含めた、「まともな」
機能郡が一通りそろっていますし、ドキュメント(scaladocだけでなく、チュートリアルが
かなり丁寧に書かれています)。まだ若干バグもありますが、そういうのを含めて
バグ報告/pull requestを送ってあげると喜ばれるのではないでしょうか。
また、プロジェクトページ自体は移っていますが、依然としてscala-incubator
プロジェクトの一つで、将来的に入る予定です(Scalaチームのプライオリティ
としてはまだそれほど高くなさそうですが)。
http://jesseeichar.github.com/scala-io-doc/index.html
まだほとんどないと推測しますが)、Java 7のNIO2を使うのも一つのテかと思います。
http://docs.oracle.com/javase/7/docs/api/
ちょっとわかりにくかもですが、java.nio.fileパッケージ以下のやつです。これは、今までのjava.io
等と比べてかなり簡潔に書けるようになっています。
0623デフォルトの名無しさん
2011/12/03(土) 12:30:31.06ああ、申し訳ない。
俺は本当にScalaも型システムも初心者なんだ。
初心者なりに「型推論」という問題を考えてはみたが、
それを簡潔に説明するための専門用語を全然知らなかった。
この数日で、それじゃあ全然話が通じないのが判った。
だから、◆CgacaMDhSQさんの使った用語を起点にして、
関連する主要な論文を何本か読んで、
なんとか会話が成立するスタート地点にやっと立ったというのが現状のレベル。
ここまでだけでもすごく勉強になった。ありがとう。
飽きてなければ、これからもよろしく。
とりあえず、この数日のやり取りで、
Scalaは他ができてることができないんじゃなくて、
他が踏み込んでいない領域に(Javaとの相性向上のため)敢えて踏み込んでいて、
そこには最新研究でも未踏の困難が広がっている、というのが判ったよ。
0624デフォルトの名無しさん
2011/12/03(土) 19:21:26.63>時間がなくてほとんど動けていないので
天才と凡人の差がここにあり。
mizさんには、もっと大きいことをやって欲しいなあ。
つまらない論争に顔をだしてないで。
ただ、あちこちのBlogに顔出して技術サポートしているのは、結構助かってるので続けてほしい気も。
Scalaの話題でBlogあちこち見たりするんだけど、
内容が怪しいところにはたいていmizさんのコメントが入っているので、見ていて安心感がある。
0625デフォルトの名無しさん
2011/12/03(土) 20:27:54.70なるほど、ありがとう。
0626デフォルトの名無しさん
2011/12/03(土) 20:54:11.48なるほど。最初からバックグラウンドをお持ちなのかと思っていました。
私は特に飽きてはいないので、またネタがありましたら、議論しましょう。
>>624
そうですね…。確かに、自分は天才ではなく、行動力が少しあるだけの凡人だと思います。
「もっと大きいこと」ができるか、に関しては、12月中にとある発表ができると思いますので、お待ちあれ
論争に関しては、顔を出す前にその「質」を見極めることが重要なのだろうと今は思っています
今回の件で特に痛感したのですが、議論するだけ無駄、という場合はやはり多くあるので。技術サポート
というか、無差別な訂正の方は、今となってはややC/Pが悪いかな…という気がしています。
>>626
何者でもない、新米社会人エンジニアで、Scalaが好きなだけの人です。コテやってるのは、単に後から
参照したときに自分がどういう風に議論してたか思い出すためと、もはやトリップつけなくても発言特定
されてしまうので、他の人がNG指定しやすいように、くらいで深い意味は無いです
0628@n_k28 偽善者乙
2011/12/04(日) 21:50:59.430629デフォルトの名無しさん
2011/12/04(日) 22:09:06.05これの対応って型システムの拡張が必要なのかな?
結構ぶつかる問題なので、早めになんとかしてほしい…
実装上の問題(バイトコードレベルでのジェネリックスの表現に関する問題)で、型システムは拡張
しなくても良いです。ただ、これを修正することでどれくらい影響が出るか、ちょっと把握できていない
ので、必要なら公式MLで聞いてみるとかした方が良いのではないかと。
0632デフォルトの名無しさん
2011/12/04(日) 22:52:58.82ありがとう。
とりあえず、できるけど面倒ということで、
当分(下手したら永遠に)改善されないことがわかったw
0633デフォルトの名無しさん
2011/12/05(月) 23:57:22.03> そうですね…。確かに、自分は天才ではなく、行動力が少しあるだけの凡人だと思います。
当たり前だ。誰がお前の事を天才だなんて思ってるんだw
日本の技術者だの研究者なんて99.9% が紹介屋なんだよ。
はやく Odersky と一緒に並んで写真撮ってけ
いろいろ役に立つぞw
別に誰かがそう思ってるとは言ってなくて、単にまあ自分は凡人ですね、という同意レス返しただけですけど
それはともかく、Oderskyと一緒に並んで写真を撮る機会はこれまでもありましたが、それがどれほど役に
立つものでしょうか?そういう風な権威付けは実態が伴って無いものですし、すぐにメッキが剥がれるもの
じゃないですかね。
0635デフォルトの名無しさん
2011/12/06(火) 01:28:35.76飯食ったり酒飲んだりする機会が結構あって、エラい人と一緒に居たとか
そういうのに希少価値を感じないよな
0636デフォルトの名無しさん
2011/12/06(火) 01:32:07.20633 は、マジレスする内容じゃないだろ。w
そんなことより、情報サイト充実させよーぜ。TIPS集がまだまだ足りない。
0637デフォルトの名無しさん
2011/12/06(火) 01:49:18.060638デフォルトの名無しさん
2011/12/06(火) 02:01:45.80程度問題でもあるんじゃないの
クヌースと飲み屋で飲み明かしたとか、それぐらいになれば
さすがに得難い経験だと思うw
0639デフォルトの名無しさん
2011/12/06(火) 02:05:31.930640デフォルトの名無しさん
2011/12/06(火) 05:39:45.20変数の値がほとんどみられないのはストレスだ。
なんか対策ない?
それはあると思います。いやまあ、自分はミーハーなんでファンとしてサイン
ねだったりすることがありますが、それはともかく。
>>636
マジレスしてすいませんorz
TIPS集とか足りない兼はなんとかします。ただ、私一人だとどうあがいても労力に
限界があるのも確かです。その辺の新しい動きは12/10(土)に発表しますんで、もうちとお待ちください
>>640
ちょっと今確かめたところ、エディタからの変数のインスペクションがうまくいかんですね。これ、以前の
バージョンでは機能していたような。ともあれ、Debugパースペクティブの「Variables」ビューで、ローカル
変数を含めた変数の値が取れます。あと、Window -> Preferences -> Scala -> Compiler で、デバッグ
用シンボル情報吐かないように設定してたりしません?
0642デフォルトの名無しさん
2011/12/06(火) 12:13:06.70http://www.infoq.com/jp/news/2011/12/yammer-scala
0643デフォルトの名無しさん
2011/12/06(火) 12:41:23.280644デフォルトの名無しさん
2011/12/06(火) 12:42:10.930645デフォルトの名無しさん
2011/12/06(火) 14:01:30.97潰すか
0646デフォルトの名無しさん
2011/12/06(火) 22:04:57.55知り合いのハッカーに泣きつくんですか?
0647デフォルトの名無しさん
2011/12/06(火) 23:21:10.89kmizuとyuroyoroとxuwei_kをなめんなよ
InfoQなんて明日にはこの世界から消滅してるぞ
0648デフォルトの名無しさん
2011/12/06(火) 23:33:16.220649デフォルトの名無しさん
2011/12/06(火) 23:58:50.96何かを召喚できそうなトリオだな。
0650デフォルトの名無しさん
2011/12/07(水) 10:31:38.380651デフォルトの名無しさん
2011/12/07(水) 12:12:46.710652デフォルトの名無しさん
2011/12/07(水) 22:19:02.83A.java
class A { static int si; }
に対して,scalaからA.siとやってもコンパイルエラーになってしまいます。
単にアクセス修飾子の問題
siをpublicにすればOK
https://gist.github.com/144306
もちろん、クラスAが名前ありのパッケージに所属してるなら、package privateでも、
同じパッケージのScalaクラス/オブジェクトからアクセスできるけど、今回はそれに当てはまらない。
0654デフォルトの名無しさん
2011/12/07(水) 23:56:57.23逆に言うと、public にしなければ不可なんですね…
うーん、またjavaでラッパーを書くことになりそうです。
ちなみにgithubのコードはC++でしょうか?
あ、申し訳ない。なんか別のを貼ってしまったようだ。こっちが正しい
https://gist.github.com/1443062
それで、よくわからないところがちょっと。無名パッケージを使うときって、
使い捨てのコードくらいというのが普通の認識なんだけど、無名パッケージの
package privateなstatic 変数にScalaからアクセスしたいというのはどういう状況なんでしょうか?
0656デフォルトの名無しさん
2011/12/08(木) 00:20:10.76しかしscalaとjavaの相互運用はなかなか微妙なんですね。
ちょっと自分のscalaのレベルでは併用は早過ぎたようです。
>仕事で使っているライブラリがちょっと特殊なんですよ…
なるほど。しかし、それってちょっとというかかかなり特殊なのでは?
それでもあえてやるなら、リフレクション使う、という手はありますが…
scalaとjavaの相互運用が微妙かというと、微妙な点はいくつかありますが、多くの
ケースで十分に上手くいく、というのが自分の認識です。現時点すら相互運用
のために色々妥協しているのに、100%の相互運用を目指すのはScalaにとっては
自殺行為じゃないかと
0658デフォルトの名無しさん
2011/12/08(木) 08:08:58.22今確認しました。あれ、自己申告制だと思ってたので、12/07に割り振られてたのに
気づきませんでした。今日明日くらいに書くのでご勘弁を
https://gist.github.com/1445310
0661デフォルトの名無しさん
2011/12/08(木) 13:25:08.850662デフォルトの名無しさん
2011/12/08(木) 15:28:52.530663デフォルトの名無しさん
2011/12/08(木) 16:29:33.340664デフォルトの名無しさん
2011/12/08(木) 18:03:25.860665デフォルトの名無しさん
2011/12/08(木) 23:51:10.700666デフォルトの名無しさん
2011/12/09(金) 07:15:03.230667デフォルトの名無しさん
2011/12/09(金) 18:13:50.510668デフォルトの名無しさん
2011/12/09(金) 18:33:53.150669デフォルトの名無しさん
2011/12/09(金) 19:27:30.970670デフォルトの名無しさん
2011/12/09(金) 20:12:18.61val fileText = io.Source.fromFile("data.txt").mkString
val (passed, failed) = List(49, 58, 76, 82, 88, 90) partition ( _ > 60 )
0671デフォルトの名無しさん
2011/12/09(金) 22:43:34.85def prime1(n: Stream[Int]): Stream[Int] = n.head #:: prime1(n.tail filter (_ % n.head != 0))
prime1(Stream from 2)
}
素数を求めるプログラム
面接で書けと言われたらとっさに書けないよねw
0672デフォルトの名無しさん
2011/12/09(金) 22:47:18.000673デフォルトの名無しさん
2011/12/10(土) 00:19:58.170674デフォルトの名無しさん
2011/12/10(土) 01:08:20.380675デフォルトの名無しさん
2011/12/10(土) 01:13:40.92http://eed3si9n.github.com/scala-collections-doc-ja/
http://eed3si9n.github.com/scala-collections-doc-ja/collections_14.html
0676デフォルトの名無しさん
2011/12/10(土) 10:38:14.32val cmd = "val x = 0"
といった感じにscalaで実行させたいコマンドが文字列で格納されている場合に
簡単に格納されているコマンドを実行する方法はないでしょうか?
(Compiler APIは使い方がいまいち分かりません。。。)
0677デフォルトの名無しさん
2011/12/10(土) 11:13:01.40http://partake.in/events/7b7f6551-8683-4968-855f-f8a62ec4bc93
ust
http://www.ustream.tv/channel/scala-kaigi
ニコ生
http://live.nicovideo.jp/gate/lv72707765
0679デフォルトの名無しさん
2011/12/10(土) 15:02:35.790680デフォルトの名無しさん
2011/12/10(土) 15:14:44.250681デフォルトの名無しさん
2011/12/10(土) 16:41:10.87お昼寝してたら寝過ごしたけど、どうだった?
0682デフォルトの名無しさん
2011/12/10(土) 16:44:14.00見た目は洒落てるけど、結局_ % n.head != 0なんだな。素数だから仕方ないか
0683デフォルトの名無しさん
2011/12/10(土) 16:49:00.55val settings = new scala.tools.nsc.Settings { usejavacp.value = true }
val main = new scala.tools.nsc.interpret.IMain(settings)
main.interpret("val x = 0")
val x = main.valueOfTerm("x") //Option[AnyRef]で帰ってくるので適当に取り出す
……でいけるはずなんだけど、
2.9.1のREPLで試してみたらmain.valueOfTerm("x")がNoneになっちゃうな
なんでだろ
0684デフォルトの名無しさん
2011/12/10(土) 18:29:06.33こんな課題出るわけないと思うんだけどw
Twitterのutil-eval使うか参考にすれば?
0685デフォルトの名無しさん
2011/12/10(土) 19:08:30.11ありがとうございます。
私も某ページに文字列をeval化するサンプルがあったので
それを参考にやってみたのですが、2.9.1で試したところ同じくNoneが帰ってきていました。。
>>684
さすがにこの内容そのものが出たわけではないですww
やはりutil-evalを参考にするのが正しいんでしょうね、ありがとうございます。
0686デフォルトの名無しさん
2011/12/10(土) 23:36:11.45処理系自分で作れじゃなくて、Lisp系でもなくてそういう課題が出るってどんなせめた講義なのかきになる。
0687デフォルトの名無しさん
2011/12/11(日) 17:55:11.970688デフォルトの名無しさん
2011/12/11(日) 18:01:05.490689デフォルトの名無しさん
2011/12/11(日) 18:10:54.140690デフォルトの名無しさん
2011/12/11(日) 18:11:48.96Scalaの力こそ人類の夢だからだ
って書こうとしたら先にオチが…
0691デフォルトの名無しさん
2011/12/11(日) 20:10:41.40実行時に例外で落ちることがあるね。
PackratParserを使って構文定義を書いてはまった。
ただ、常に落ちるわけではないのがよくわからない。
どうもval x = yみたいな単純コピーは危ないみたい。
0692デフォルトの名無しさん
2011/12/11(日) 20:14:49.261. 書きたいことを冗長あるいは複雑にしている。
2. 学習・教育コストが高い。
の二つがある。
言語オタクは1ばかり語りたがるが、一般人は2にしか関心ないよ。
エヴァンジェリストの諸君は、そこを勘違いしちゃダメだ。
0693デフォルトの名無しさん
2011/12/11(日) 20:50:55.920694デフォルトの名無しさん
2011/12/11(日) 21:37:17.76そういう覚え方は逆に危ないです。valが危ないわけではなくて、パーザコンビネータでは、その性質上、
val同士の相互参照が発生し得るので、それを意識してないと問題になるという話です。普通にvalを書く分に
何か危険があるわけではないです。ちなみに、そういう理由もあって、パーザコンビネータの規則には
lazyを付けることが多いです。
0696デフォルトの名無しさん
2011/12/11(日) 22:47:17.69val の順序を変えることで相互参照が断ち切れたのでしょうか?
0697デフォルトの名無しさん
2011/12/14(水) 12:11:06.620698デフォルトの名無しさん
2011/12/14(水) 13:07:23.41スキーマが何なのか知ってるやつが誰もいないとか
そこらのプログラマはXMLとか触ったことすらないのか
0699デフォルトの名無しさん
2011/12/14(水) 13:19:27.040700デフォルトの名無しさん
2011/12/14(水) 19:04:05.00何のだろう?
>XMLの
XMLのデータ定義なんて
あんまり気にしないだろう。
SOAPのWSDLやCouch/MongoみたいなDBというキーワードが出ない限り。
0701デフォルトの名無しさん
2011/12/14(水) 19:32:39.570702デフォルトの名無しさん
2011/12/14(水) 19:56:18.020703デフォルトの名無しさん
2011/12/14(水) 20:05:50.58この間のドワンゴ勉強会より内容の難易度は落ちてると思うが、見てるやつのレベルはもっと落ちてた
Scalaを難しいと言ってるやつの程度がよくわかったよ
0704デフォルトの名無しさん
2011/12/14(水) 20:11:16.16一番まともなだったというのは皮肉だなw
0705デフォルトの名無しさん
2011/12/14(水) 20:14:42.48期待してない
0706デフォルトの名無しさん
2011/12/15(木) 03:35:33.980707デフォルトの名無しさん
2011/12/15(木) 20:17:08.130708デフォルトの名無しさん
2011/12/15(木) 20:28:53.270709デフォルトの名無しさん
2011/12/16(金) 04:03:16.78http://partake.in/events/4b3afdc8-e4ec-4010-b8ec-31b89210dda0
これ一通り読んだけど、すごくわかりやすくて勉強になった
プログラム例がしっかりしてるのと、簡単なものから順番に紹介してくれてるのがいい
Scalazが結構わかった気がする
残りも楽しみだ
0710デフォルトの名無しさん
2011/12/16(金) 04:42:40.780711デフォルトの名無しさん
2011/12/18(日) 00:09:35.99入力として72と100という数値があったとして
72は、リストの値の範囲
100は、リストの値の範囲外
という処理はどう書くのが普通なんでしょうか?
0712デフォルトの名無しさん
2011/12/18(日) 00:38:27.69val inputs = List(72,100)
val (min,max) = (list.min,list.max)
for (input <- inputs) {
println(input + "は、リストの値の" + (if (min <= input && input <= max) "範囲" else "範囲外"))
}
0713デフォルトの名無しさん
2011/12/18(日) 00:38:36.200714デフォルトの名無しさん
2011/12/18(日) 06:50:08.080715デフォルトの名無しさん
2011/12/18(日) 10:05:31.870716デフォルトの名無しさん
2011/12/18(日) 10:14:06.46よくなった?
0717デフォルトの名無しさん
2011/12/18(日) 12:48:53.400718デフォルトの名無しさん
2011/12/18(日) 13:14:15.56>712-714はあんまり面白くないけど。
0719デフォルトの名無しさん
2011/12/18(日) 13:16:39.97おいこの記事読んでもさっぱり理解できないんだけど
0720デフォルトの名無しさん
2011/12/18(日) 17:31:07.68scala-2.9.1に移行、2.7のサポート打ち切り
ディレクトリ構成が微妙に変わる
(プラグイン設定を /project/plugins/ に置いてたのを /project/ に置くように)
あと修正やら改良がいろいろ 詳しくは https://github.com/harrah/xsbt/wiki/Changes
まさかとは思うけど0.7系使ってるのならはよ切り替えた方が。
0.10系からはコンパイルも早くなってるし。
0721デフォルトの名無しさん
2011/12/18(日) 18:03:55.48Read original paper.
0722デフォルトの名無しさん
2011/12/18(日) 20:25:07.12「原論文を読め、このクズ。
ちなみに俺は英語が得意だ、hahaha!」
0723デフォルトの名無しさん
2011/12/18(日) 20:29:09.950724デフォルトの名無しさん
2011/12/18(日) 22:09:01.10→
>>=
⊙
⇓
⇑
∧
これ何?
0725デフォルトの名無しさん
2011/12/18(日) 22:39:20.020726デフォルトの名無しさん
2011/12/19(月) 14:24:08.71>>721のように書くなら、Read the original paper. だよ。
0727デフォルトの名無しさん
2011/12/19(月) 21:32:17.360728デフォルトの名無しさん
2011/12/19(月) 21:41:35.37というか、その論文、5年以上かかってるのね。
0729デフォルトの名無しさん
2011/12/19(月) 21:42:32.130730729
2011/12/19(月) 21:43:47.800731デフォルトの名無しさん
2011/12/19(月) 23:43:20.50ApplicativeとかIterateeとかどうでもいい
ハスケラーに騙されてるだけ
0732デフォルトの名無しさん
2011/12/20(火) 01:27:35.060733デフォルトの名無しさん
2011/12/20(火) 01:52:30.31すべってるよ、君
0734デフォルトの名無しさん
2011/12/20(火) 16:03:27.76それがscalaなんだろうな。
haskellのapplicativeは便利なんだがな。
0735デフォルトの名無しさん
2011/12/20(火) 16:46:37.67だからハスケラーに騙されてるって言ってんだよ
悪いハスケラー「Applicativeなら綺麗に書ける!Iterateeは次世代IO!」
↓
馬鹿なスカラー「よーしそれならScalazとか作っちゃうぞ」
↓
さらに馬鹿なスカラー「なんか難しいけど流行ってるみたいだしScalaz勉強しよう」
↓
悪いハスケラー「ギャハハハほんとに作ってる!なにこの汚ねえコード!猿真似ww関数型の面汚しwww」
↓
一般ジャヴァー&シーシャーパー「Scalaって複雑そうだから触れないでおこう。あとなんかキモいし」
↓
馬鹿なスカラー「あれ?世界中から馬鹿にされてる?それによく考えたらこのライブラリ使い道ないな…」
完全に嵌められてる
0736デフォルトの名無しさん
2011/12/20(火) 17:26:33.55better javaとしてしか使えてない俺大勝利
0737デフォルトの名無しさん
2011/12/20(火) 18:08:19.610738デフォルトの名無しさん
2011/12/20(火) 19:37:05.92使わなくてもプログラムは作れるが使えばもっと抽象化できるということだろう
0739デフォルトの名無しさん
2011/12/20(火) 22:36:41.310740デフォルトの名無しさん
2011/12/20(火) 22:47:50.08どういうことかもう少し詳しく聞かせて
0741デフォルトの名無しさん
2011/12/20(火) 23:02:42.77個人的な感想だけど
デザインパターンってOOPでは直接表現できないことを、どうにか解決してるという感想をもってる
例えば新しいプログラミング言語の機構を作ったときに、その評価としてデザインパターンが解いてる問題を
直接表現できるかみたいなのもある
visitor パターンはクラス階層に操作を追加できるようにするパターンだけど
裏をかえせば、OOPでは操作の追加が難しいという欠点があるということだし
あんまり真面目に取らなくていいですw
0742デフォルトの名無しさん
2011/12/20(火) 23:38:20.540743デフォルトの名無しさん
2011/12/20(火) 23:42:11.000744デフォルトの名無しさん
2011/12/21(水) 00:16:32.21singletonは直接サポートしてる。
そういう文章はどこかにありそう。
0745デフォルトの名無しさん
2011/12/21(水) 00:29:09.630746デフォルトの名無しさん
2011/12/21(水) 01:05:08.65haskellも知らなくても組める。ファンクタの働きくらいはしっておい
ていいと思うけどな。
0747デフォルトの名無しさん
2011/12/21(水) 01:06:42.40それすら理解せずにプログラマを自称するつもりですか?
恥ずかしい人ですね
0748デフォルトの名無しさん
2011/12/21(水) 01:07:22.83この世に〜しないと駄目なんてものはない。
プログラミングしなくてもいいし。
0749デフォルトの名無しさん
2011/12/21(水) 01:26:10.42これの記述正しい?
0750デフォルトの名無しさん
2011/12/21(水) 01:31:58.16何か勘違いしてるみたいだけどデザインパターンってのは
「可能にするためのトリック」ではなくて
「よく出てくるから名前を付けてみたので共有しましょう」
なんだけどな
0751デフォルトの名無しさん
2011/12/21(水) 01:35:38.23OOP=中二病
0752デフォルトの名無しさん
2011/12/21(水) 02:26:52.833行でまとめてくれ
0753デフォルトの名無しさん
2011/12/21(水) 12:25:47.48これを難しい順に左から並べていただけませんか?
0754デフォルトの名無しさん
2011/12/21(水) 12:29:54.300755デフォルトの名無しさん
2011/12/21(水) 12:46:49.14英語がわからないなら
読むのを
諦めろ。 ハイ3行。
0756デフォルトの名無しさん
2011/12/22(木) 05:05:22.670757デフォルトの名無しさん
2011/12/22(木) 06:52:45.28オートコンプリートをオフにできない(チェックを外しても復活する)のも相変わらず。
閉じかっこが文脈を読まずに挿入されるし、タブを使わない設定でもインデントにタブが入る。
デバッガは駄目だし、参照ジャンプもよく失敗する。
0758デフォルトの名無しさん
2011/12/23(金) 10:52:02.92http://www.infoq.com/jp/news/2011/12/scala-fresher
0759デフォルトの名無しさん
2011/12/23(金) 22:03:00.280760デフォルトの名無しさん
2011/12/24(土) 01:22:10.380761デフォルトの名無しさん
2011/12/24(土) 08:06:41.330762デフォルトの名無しさん
2011/12/24(土) 21:39:29.710763デフォルトの名無しさん
2011/12/24(土) 22:20:58.01ちょっと何を言ってるのかわからないですね
0764デフォルトの名無しさん
2011/12/25(日) 00:23:22.71どういうことなのかもっと詳しくお願い
0765デフォルトの名無しさん
2011/12/25(日) 15:11:31.340766デフォルトの名無しさん
2011/12/26(月) 14:25:55.76http://sourceforge.jp/magazine/11/12/26/0449214
0767デフォルトの名無しさん
2011/12/27(火) 13:00:38.43だれか冬休み中にsbt-coverageのテンプレ追加しといて
sbt0.11でよろしくおねがいします
0768デフォルトの名無しさん
2011/12/27(火) 14:34:44.820769デフォルトの名無しさん
2012/01/06(金) 13:00:28.410770デフォルトの名無しさん
2012/01/06(金) 13:25:35.74全然ステルスになってないだろ
0771デフォルトの名無しさん
2012/01/06(金) 19:14:33.970772デフォルトの名無しさん
2012/01/08(日) 10:55:33.32ClassManifest[Symbol]が無いから?
scala> Array(0,1,2)(0)
res0: Int = 0
scala> Array('a, 'b, 'c)(0)
<console>:9: error: type mismatch;
found : Int(0)
required: scala.reflect.ClassManifest[Symbol]
Array('a, 'b, 'c)(0)
^
scala> Array('a, 'b, 'c).apply(0)
res2: Symbol = 'a
0773デフォルトの名無しさん
2012/01/08(日) 15:19:28.62Arrayオブジェクトのapplyの定義が違って
2つ目の書き方だと取り出す以前に配列を作成できていない
def apply(x: Int, xs: Int*): Array[Int]
def apply[T](xs: T*)(implicit arg0: ClassManifest[T]): Array[T]
implicit parameterでClassManifestを取るところを明示的にInt渡してるからエラーになってる
0774デフォルトの名無しさん
2012/01/08(日) 20:23:55.57↓をしないとimplicit parameterとして解釈されちゃうのか
scala> Array('a, 'b, 'c)(implicitly[ClassManifest[Symbol]])(0)
Array('a, 'b, 'c)(implicitly[ClassManifest[Symbol]])(0)
res19: Symbol = 'a
ここまでするならapply明記するかなーというのが妥協点として有力ですね
0775デフォルトの名無しさん
2012/01/08(日) 23:16:23.52val a = Array('a,'b,'c)
a(0)
0776デフォルトの名無しさん
2012/01/09(月) 00:38:09.20mapの中なんで一時変数作りたくなかったんですよ
0777デフォルトの名無しさん
2012/01/10(火) 06:32:33.59逆。ステマってのが要するにエバンジェリスト。
0778デフォルトの名無しさん
2012/01/10(火) 11:17:31.480779デフォルトの名無しさん
2012/01/10(火) 22:10:51.600780デフォルトの名無しさん
2012/01/13(金) 10:37:01.730781デフォルトの名無しさん
2012/01/13(金) 11:48:31.090782デフォルトの名無しさん
2012/01/13(金) 12:08:13.620783デフォルトの名無しさん
2012/01/14(土) 23:55:04.92rxvtなら英語の情報があるんだけどTera Termは和製だからなぁ
0784デフォルトの名無しさん
2012/01/15(日) 00:14:57.330785デフォルトの名無しさん
2012/01/15(日) 06:27:50.29A Report from the Sewer Hole: Cygwin, JLine, rxvt, and the Scala REPL | Java.net
http://weblogs.java.net/blog/cayhorstmann/archive/2010/11/24/report-sewer-hole-cygwin-jline-rxvt-and-scala-repl
0786デフォルトの名無しさん
2012/01/15(日) 11:25:32.75そう。そのrxvt用のパッチは既に公式のscalaシェルスクリプトに含まれている。
ただ、そいつがTeraTermと相性が悪いから、とりあえずその行はコメントアウトして凌いでる。
>>784
> Cygwinなんて捨てろよ
俺だってWin捨てたいよ・・・orz
まあ、rxvt用パッチが公式に入ってんだから、世界でもCygwinの需要はあるってことで見逃してくれ。
0787デフォルトの名無しさん
2012/01/15(日) 11:34:20.11で、できたのか?
-Djline.terminal=jline.UnixTerminalとTERM環境変数を適切に設定すればいけると思うが
0788デフォルトの名無しさん
2012/01/15(日) 15:38:35.71いや、rxvtとは端末特性が違うのでそれだけではダメ。
sttyをいじるだけで済めばいいが、jlineにパッチを当てる必要があるようだと面倒だな・・・
0789デフォルトの名無しさん
2012/01/15(日) 16:05:44.22しょぼっ
0790デフォルトの名無しさん
2012/01/15(日) 17:27:28.970791デフォルトの名無しさん
2012/01/15(日) 18:19:09.03http://www.google.co.jp/search?hl=ja&q=rlwrap+cygwin
0792デフォルトの名無しさん
2012/01/15(日) 18:48:28.80ほむほむ。これは知らなかった。最後の手段に使えそう。さんくす!
0793デフォルトの名無しさん
2012/01/19(木) 23:36:15.35ってIntを引数にとって、無名関数がIntを
返すっていう定義であってる?
0794デフォルトの名無しさん
2012/01/19(木) 23:51:34.43def a[Int]:Int => Int = b => b
def a[Int]: Int => Int = ((b: Int) => b)
0795デフォルトの名無しさん
2012/01/20(金) 00:04:10.960796デフォルトの名無しさん
2012/01/20(金) 12:57:49.94これってどう解釈すればいいの?
なぜ、型に変数代入できるの?
0797デフォルトの名無しさん
2012/01/20(金) 13:50:17.39aが名前で:と=の間のIntが型で=以降が値の1
同じように def a: Int => Int = b => b は
aが名前で:と=の間のInt => Intが型でb => bが値
>>794
は型変数にIntって名前を使ってて紛らわしいな
0798デフォルトの名無しさん
2012/01/21(土) 10:49:33.61原監督に似てるよね
0799デフォルトの名無しさん
2012/01/21(土) 11:26:40.770800デフォルトの名無しさん
2012/01/21(土) 12:30:19.71いい数値演算と言語処理のライブラリ/バインディング知らない?
0801デフォルトの名無しさん
2012/01/21(土) 16:03:43.370802デフォルトの名無しさん
2012/01/21(土) 19:38:25.870803デフォルトの名無しさん
2012/01/21(土) 23:41:55.010804デフォルトの名無しさん
2012/01/21(土) 23:54:17.85・Preliminary Reflection API
・faster inliner
・scaladoc improvements (Thanks docspree folks!)
・virtualized pattern matcher
・many more!
ってわかんねーよ
0805デフォルトの名無しさん
2012/01/22(日) 01:23:44.770806デフォルトの名無しさん
2012/01/22(日) 05:35:08.820807デフォルトの名無しさん
2012/01/22(日) 09:35:29.68s += "item"
っていう例で、+=を自動で + とvarへの代入する言語仕様って、
+と-以外の演算子でも有効?
0808デフォルトの名無しさん
2012/01/22(日) 14:00:14.07メソッド名が演算子のみで構成されてるならなんでもおk
l += rという表記は、
・変数lに入ってるクラスに+=というメソッドがない
・変数lがimplicit conversionで+=というメソッドを持っているクラスに変換できない
・l = l + rが型的に正しい(lがvarで宣言されていて、lがメソッド+を持っている)
以上をすべて満たしてる場合にl = l + rとして再解釈される …って言語仕様の6.12.4に書いてあった
class A(init: String) {
var str = init
def *^-^*(s: String): A = { str += s; this }
}
var l = new A("left")
l *^-^*= "-right"
println(l.str) // => left-right
こんなのでもいける
0809デフォルトの名無しさん
2012/01/22(日) 17:23:25.32Thanks! 完璧に求めている答えでした。
でも、ということは、list = x :: list というのは略記できないってことなんだね・・・
0810デフォルトの名無しさん
2012/01/22(日) 17:34:17.10list = x :: list は
list = list.::(x) って意味なので
list ::= x と書ける
けど正直分かりにくいと思う
0811デフォルトの名無しさん
2012/01/23(月) 23:23:20.50overloaded method value printf with alternatives: ・・・
とか言われて、使えん。なぜ?
format()とか付ければ回避できるけど、タイプ数がもったいない。
0812デフォルトの名無しさん
2012/01/24(火) 01:21:53.52引数に渡してるものの型が定義に合ってない
def printf(String, Object*): PrintStream
def printf(java.util.Locale, String, Object*): PrintStream
Object(AnyRef)の可変長引数だからIntとかはそのまま渡せないね
0813デフォルトの名無しさん
2012/01/24(火) 02:46:24.22なんてこった!Predef.printfはAny*だったから動いてたのか!
可変引数にはautoboxingかからないんだな。
またひとつ賢くなっちまったぜ。
さんきゆーふれんず
0814デフォルトの名無しさん
2012/01/28(土) 20:27:00.750815デフォルトの名無しさん
2012/01/28(土) 20:32:18.25これってリスナーのメールボックスにメッセージを送るだけで、処理が終わるのを待たずに次の行のcount += 1が実行されるという認識で大丈夫ですか?
case class Add(who:Actor)
case class Changed(what:AFoo, count:Int)
case object Access
class AFoo extends Actor {
private var listeners:List[Actor] = Nil
private var count = 0
def act = loop {
react {
case Add(who) => listeners = who :: listeners
case Access => access()
}
}
private def access() = {
notifyListeners
count += 1
}
private def notifyListeners() = {
listeners.foreach( a => a ! Changed(this, count))
}
}
0816デフォルトの名無しさん
2012/01/28(土) 20:35:05.97ソースの続き
class AFooListener(afoo:AFoo) extends Actor {
afoo ! Add(this)
def act = loop {
react {
case Changed(f, cnt) => changed(f, cnt)
}
}
def changed(eventFrom:AFoo, count:Int) :Unit = {
if (count < 10) eventFrom ! Access
}
}
0817デフォルトの名無しさん
2012/01/28(土) 21:14:17.520818815
2012/01/28(土) 21:54:53.55俺が答えるのもあれだけど、ラッパーメソッド?的なモノを用意すればいいんじゃない?
// コイツをJavaから実行
def sendFromJava(s:String) = {
actor ! s
}
0819デフォルトの名無しさん
2012/02/05(日) 00:58:20.470820デフォルトの名無しさん
2012/02/05(日) 07:16:14.63クロージャって yield の代替になるの?
0821デフォルトの名無しさん
2012/02/05(日) 10:08:09.190822デフォルトの名無しさん
2012/02/05(日) 16:34:11.09(1 to 10).map(i => "a" + i -> i.toString)
for(i <- 1 to 10) yield i => "a" + i -> i.toString
yieldを使わなければ出来なくて、有効なケースってどういうのがあるの?
0823デフォルトの名無しさん
2012/02/05(日) 19:07:20.12そりゃ、yield じゃなくて for 式が map に置き換えられるって話でしょう。
言語仕様で for 式は他のメソッドに置き換えられて実行されると決まってるのだから、
当然 yield 無しに書けないコードは無い。ただ、そっちのが読み書きしやすいってだけの話。
0824デフォルトの名無しさん
2012/02/05(日) 22:58:17.67今のScala-IDE(eclipseのプラグイン)と組み合わせてちゃんと動く気がしない。
0825デフォルトの名無しさん
2012/02/06(月) 04:11:39.24sbtのほうは1.7ぐらいの時に動かしてみたけどeclipseは当時ひどくて試してないなー。いま簡単に動くなら試してみたいけどつらそうだね。
0826デフォルトの名無しさん
2012/02/07(火) 01:51:04.64sbt 固有のログがコンソールに出てきて鬱陶しいから次のような感じにしてんだけど、
"[info] Set current project to ..." ってのが最初に出てくる。どうしたらいいの?
#!/usr/bin/env scalas
!#
/***
scalaVersion := "2.9.1"
logLevel := Level.Error
*/
println("hoge")
0827デフォルトの名無しさん
2012/02/11(土) 01:30:56.29http://www.atmarkit.co.jp/fjava/index/index_scala.html
0828デフォルトの名無しさん
2012/02/13(月) 01:12:02.310829デフォルトの名無しさん
2012/02/13(月) 06:08:17.750830デフォルトの名無しさん
2012/02/13(月) 14:53:13.25Play2.0でまた活発になるといいね
0831デフォルトの名無しさん
2012/02/13(月) 20:42:31.94いま、ブレーク前夜に特有の静けさ。
0832デフォルトの名無しさん
2012/02/13(月) 21:15:39.790833デフォルトの名無しさん
2012/02/13(月) 21:21:42.13単に言語のネタとして話すことがなくなってきたというだけでは
0834デフォルトの名無しさん
2012/02/13(月) 21:38:57.93試すのも面倒臭いんだよねw
0835デフォルトの名無しさん
2012/02/14(火) 07:08:53.980836デフォルトの名無しさん
2012/02/15(水) 07:07:56.190837デフォルトの名無しさん
2012/02/15(水) 21:49:40.180838デフォルトの名無しさん
2012/02/15(水) 22:35:47.31iptablesも起動してないのに誰がパケットを遮断してるのか…
分散プログラミングはwindowsの方が楽だな〜
単に自分がlinuxに無知なだけだけど
0839デフォルトの名無しさん
2012/02/16(木) 00:14:15.560840デフォルトの名無しさん
2012/02/16(木) 01:28:18.85助言サンクス
838のあと、自前でポートスキャナを書いてチェックしてみたんだけど
同ホスト内でスキャンするとアクターの受信待ちポートがみつかるのに
リモートからのスキャンだと見えなかった。
きっとlinuxユーザなら常識的な何かを見落としてるんだと思う。
0841デフォルトの名無しさん
2012/02/16(木) 02:06:58.010842デフォルトの名無しさん
2012/02/16(木) 06:06:33.350843デフォルトの名無しさん
2012/02/16(木) 07:28:51.600844デフォルトの名無しさん
2012/02/16(木) 22:59:25.85ありがとう。おかげで解決した。
nc -l xxxx 50000で待つ場合と
akkaのアクターで同じポートで待つ場合をnetstatで比較したら、
前者はlocal addressが*:50000、後者はxxxx:50000
になっていた。
どうもakkaではホスト名で登録するとxxxxになるので
IPアドレスを直接指定しないと駄目みたい。
0845デフォルトの名無しさん
2012/02/16(木) 23:29:40.950846デフォルトの名無しさん
2012/02/18(土) 07:51:45.20Javaで以下のようなBuilderパターンの実装があります。
Builderオブジェクトはサイズが大きいので
Builder.Resultオブジェクトを利用するときには解放したいのです。
|class Builder {
| static class Result {...}
| Result build() {...}
|}
それをScalaで実現するにはどうすればいいでしょうか?
(結果の型はBuilder.Resultにしたいという制約があります)
以下のようにすると、Builder.Resultオブジェクトが
Builderへの参照を持ってしまいます。
|class Builder {
| class Result {...}
| def build(): Result = {...}
|}
以下のようにすると、Builderへの参照は持ちませんが、
せっかく関数型言語にしたのに冗長ですし、
関連のあるコードが遠くに離れてしまい、保守性を低下させます。
|class Builder {
| def build(): Result = {...}
|}
|object Builder {
| class Result {...}
|}
0847デフォルトの名無しさん
2012/02/18(土) 14:29:55.90class Result {...}
class Builder {
def build(): Result = {...}
}
}
0848デフォルトの名無しさん
2012/02/19(日) 21:16:55.37- Resultってクラス名が本質的な意味を持っているとは思えない
- Builderと言っている機能はコンパニオンオブジェクトで実現可能
0849デフォルトの名無しさん
2012/02/19(日) 21:31:04.34type A = x.y.C
みたいな感じで,クラスの別名を定義できますが,
x.y.CのstaticメンバをA.fと参照することはできないようです。
importせずになんとか別名経由で参照する方法はないでしょうか?
0850デフォルトの名無しさん
2012/02/20(月) 07:56:55.86可視性が通ってないんじゃないの。
0851デフォルトの名無しさん
2012/02/20(月) 12:18:11.84http://www.infoq.com/jp/news/2012/02/twitter-effective-scala
0852デフォルトの名無しさん
2012/02/20(月) 21:02:04.89stackoverflowに同じ質問があったんですがうまく設定できない…
0853デフォルトの名無しさん
2012/02/22(水) 21:40:06.57Product数字.scalaとか
Tuple数字.scalaとか
何でこんな名前なの?
0854デフォルトの名無しさん
2012/02/22(水) 21:57:18.030855853
2012/02/23(木) 20:04:55.98マトモに中身見ずに聞いてました、ありがとう
0856デフォルトの名無しさん
2012/02/24(金) 01:39:58.18実行しても待たされた挙句に何も出力しないで帰って来る。
なんでじゃああああああw
0857デフォルトの名無しさん
2012/02/24(金) 07:41:21.760858デフォルトの名無しさん
2012/02/24(金) 09:39:32.13remoteでないのなら単純な理由だろうな〜
start()叩いてないとか?
0859856
2012/02/24(金) 12:03:39.32打ち間違いは今のところ見当たらず。
-cpのパスを故意に別のパスにするとShapeDrawingActorがMissing dependencyだって文句言ってくるから
scalacしたクラスファイルは読み込んでると思う。
ノワワーン
>>858
「remoteでないのなら」ってのはどういうことですか?
0860856
2012/02/24(金) 12:15:47.72こりゃ環境の問題でしょうね(Fedora16上でやってます)。
0861デフォルトの名無しさん
2012/02/24(金) 12:41:38.80動物本を読んだ事が分からないんだけど、それってリモートアクター?
そうならば通信がどっかて止まっているのかも。
0862デフォルトの名無しさん
2012/02/24(金) 21:59:24.900863デフォルトの名無しさん
2012/02/25(土) 15:14:47.46何故引数一つ一つに付けられないようにされているのでしょうか?
0864デフォルトの名無しさん
2012/02/25(土) 15:27:37.710865856
2012/02/25(土) 20:00:25.88これは私の話のことですか?
気になったので一応/etc/selinux/configでSELINUX=disabledをセットして試してみましたが、変わりませんでした。
0866デフォルトの名無しさん
2012/02/25(土) 20:15:03.13そもそもリモートアクターなの?
0867デフォルトの名無しさん
2012/02/26(日) 01:41:53.76http://www.infoq.com/jp/news/2012/02/scala-ide
0868デフォルトの名無しさん
2012/03/01(木) 21:47:44.670869デフォルトの名無しさん
2012/03/01(木) 22:54:36.770870デフォルトの名無しさん
2012/03/02(金) 05:57:39.070871デフォルトの名無しさん
2012/03/02(金) 09:16:36.330872デフォルトの名無しさん
2012/03/02(金) 10:15:32.230873デフォルトの名無しさん
2012/03/02(金) 10:30:09.10https://play.lighthouseapp.com/projects/82401/milestones/122723-20
https://play.lighthouseapp.com/projects/82401-play-20/overview
1系から2系に足りないやつ持ってきて追加してるフェーズ?
0874デフォルトの名無しさん
2012/03/05(月) 22:02:23.850875デフォルトの名無しさん
2012/03/05(月) 22:29:49.800876顕正新聞 平成24年2月5日号「原発全廃特集号」
2012/03/06(火) 09:43:52.73・原発は日本を滅ぼす、即時全廃せよ
・六ヶ所村再処理工場直下に二つの活断層
・耐震基準450ガルと、著しく耐震性に欠ける施設
・大事故が起きたらチェルノブイリを遥かに越す未曽有の大惨事が
・代替は天然ガス・コンバインドサイクルで十分
http://d.hatena.ne.jp/kensho01/20120208/1328718592
0877デフォルトの名無しさん
2012/03/07(水) 00:38:57.12単に主要人物が2chから離れているだけ?
東京とか名古屋とか仙台とかのScala勉強会は盛況?
0878デフォルトの名無しさん
2012/03/07(水) 04:53:01.94言語仕様的には2.9って2.8とほとんど変わってないから、ずっと2.8時代が続いているようなもんなんだよな
2009年のBetaで盛り上がってるころからずっと同じ言語を見てると思うとさすがに言語ウォッチャー的には飽きてくる
0879デフォルトの名無しさん
2012/03/07(水) 08:43:19.700880デフォルトの名無しさん
2012/03/07(水) 11:58:41.320881デフォルトの名無しさん
2012/03/07(水) 12:08:53.070882デフォルトの名無しさん
2012/03/08(木) 12:24:36.670883デフォルトの名無しさん
2012/03/09(金) 21:06:57.12コンストラクタが持てるかどうかだけですか?
0884デフォルトの名無しさん
2012/03/09(金) 23:13:32.840885デフォルトの名無しさん
2012/03/12(月) 06:19:24.030886デフォルトの名無しさん
2012/03/14(水) 07:18:37.89軽くググッたらXMLリテラル使うといいかもっていうふざけた答えがみつかりましたw
標準ライブラリにはないとしても、例えばJavaでいうところのStringUtilsくらいの
メジャーなライブラリで用意されてたりしないんですか?
Javaしか使ったことないんだけど、LL言語で唯一憧れるのが#{foo}みたいな記法
これないと不便ですよね
0887デフォルトの名無しさん
2012/03/14(水) 07:30:34.15文字列リテラル自体がそういう記法に対応してないのかなと思いまして
あ、これだとライブラリにないでしょうかっていう質問がおかしいか…
0888デフォルトの名無しさん
2012/03/14(水) 07:44:15.49"Lv.%d%n攻撃力 %,3d%n防御力 %,3d%n生命力 %,3d".format(lv, atk, deff, hp)
0889デフォルトの名無しさん
2012/03/14(水) 07:58:13.590890デフォルトの名無しさん
2012/03/14(水) 09:06:17.02- $を使ったインデックス参照形式での埋め込み
"SELECT name FROM tbl WHERE id > %1$s AND name LIKE %2$s".format(10, "Tom")
今の所これで事足りてるかな
0891デフォルトの名無しさん
2012/03/14(水) 11:57:41.230892デフォルトの名無しさん
2012/03/14(水) 14:59:55.67RC信用出来たじゃないですかー!やったー!
0893デフォルトの名無しさん
2012/03/14(水) 21:14:04.03誰も使う人なんていないのに
0894デフォルトの名無しさん
2012/03/14(水) 23:29:52.840895デフォルトの名無しさん
2012/03/15(木) 00:03:37.430896デフォルトの名無しさん
2012/03/15(木) 00:26:04.580897デフォルトの名無しさん
2012/03/15(木) 00:30:33.560898デフォルトの名無しさん
2012/03/15(木) 01:16:51.850899デフォルトの名無しさん
2012/03/15(木) 16:15:17.000900デフォルトの名無しさん
2012/03/15(木) 17:54:04.010901デフォルトの名無しさん
2012/03/16(金) 00:18:32.900902デフォルトの名無しさん
2012/03/16(金) 01:27:50.21使える人、使いたい人も徐々に増えてきた。
0903デフォルトの名無しさん
2012/03/16(金) 13:31:41.26HaskellのDimensionalのような
0904デフォルトの名無しさん
2012/03/17(土) 21:32:26.03http://www.ibm.com/developerworks/jp/linux/library/l-sparkdataanalysis/
0905デフォルトの名無しさん
2012/03/18(日) 11:27:32.86F# 単位
http://code.google.com/p/lascala/source/browse/trunk/scala/data/Measure.scala
Scalaだと、こんなのはあった。
0906デフォルトの名無しさん
2012/03/19(月) 17:47:32.17http://d.hatena.ne.jp/papamitra/20120318/Iteratee
papamitraさんありがとう!
0907デフォルトの名無しさん
2012/03/19(月) 23:11:22.07http://www.scala-lang.org/node/12565
プロジェクト案発表したみたい
0908デフォルトの名無しさん
2012/03/20(火) 02:59:57.640909デフォルトの名無しさん
2012/03/20(火) 05:05:05.760910デフォルトの名無しさん
2012/03/20(火) 09:48:37.890911デフォルトの名無しさん
2012/03/20(火) 11:02:42.600912デフォルトの名無しさん
2012/03/20(火) 11:23:33.930913デフォルトの名無しさん
2012/03/20(火) 11:28:19.630914デフォルトの名無しさん
2012/03/20(火) 23:44:10.43MSのJava実装は他との互換性がなくなって囲い込みされる危険性に反応したんだとおもう。
JVM言語については、いまのところ否定的なコメントはないと思う。
マルチVMや特定JVMへの最適化や、Javaのコントロールに意味がなくなるに危険性を感じたら何かするかもしれない。
RHやIBMやMSが主導権握る事態になれば何かあるかもしれない。
0915デフォルトの名無しさん
2012/03/22(木) 00:46:59.79難しい。
Scalaが大学で研究開発されている言語であるからOracleに買収されることはない話と、
914の話は何のつながりがあるのだろうか?
ところで、RHって何?
0916デフォルトの名無しさん
2012/03/22(木) 00:51:57.33どうやってこれ作っているのかよくわからない
0917デフォルトの名無しさん
2012/03/22(木) 00:53:47.730918デフォルトの名無しさん
2012/03/22(木) 02:34:03.250919デフォルトの名無しさん
2012/03/23(金) 19:42:14.770920デフォルトの名無しさん
2012/03/23(金) 21:59:56.44検索すると、いっつも、とある会社がトップにひかかるのだが、、。
0921デフォルトの名無しさん
2012/03/23(金) 23:43:25.92でてこないよ?wikipediaがトップ。
0922デフォルトの名無しさん
2012/03/24(土) 23:28:50.73http://news.mynavi.jp/news/2012/03/14/015/index.html
↑
Scalaは、まだまだ50位にも入らないのか。
このスレも過疎化がすごいし、みんなどこへ行ったんだろう。
0923デフォルトの名無しさん
2012/03/24(土) 23:52:32.300924デフォルトの名無しさん
2012/03/24(土) 23:56:29.390925デフォルトの名無しさん
2012/03/26(月) 03:26:26.430926デフォルトの名無しさん
2012/03/26(月) 10:12:23.73Actorじゃなければ case class にして状態が変わるたびに新しく生成すればいいけど
Actorだとメッセージの受け口であるreceiveがインスタンスに結び付いてるから作り直す事ができない。
↓のようにreceive関数をカリー化してbecomeで遷移するのかな?
def receive_with_state(x: Int): Receive = {...}
become(receive_with_state(1))
状態が増えるとカリー化してる部分が汚くなりそう...
なんか良い方法ないすかね
0927営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 13:15:01.54Shows a simple request/response wrapper for Akka Actors
https://gist.github.com/1043056
0928営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 10:32:54.79でも、各地で開催されているScala勉強会はまだ続いているんだよね。
0929営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 12:12:59.20ScalaJPとかも動き始めたから、みんなそっち行ってるのかも。
0930営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 13:44:39.800931営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 19:13:32.16Functional Programming in Scala
http://manning.com/bjarnason/
っていう本の電子版が、クーポン番号知っていれば安く買えるとTwitterで知ったので
さっそく買おうとしてみたら、すでにクーポン番号は使用期限が切れていた。
0932営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 23:24:17.320933営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 10:11:03.19kwsk
0934営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 11:24:51.21グリーンブック割引コードってのが書いてある。
0935営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 11:28:24.76http://www.manning.com/suereth/
こことかの緑の奴でいい。
0936営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 19:09:55.860937営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 23:02:59.250938営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 12:58:52.800939営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 13:22:14.26> Scala2.9.2RC3 キター
Contributeの中に、日本人も数名入っているなあ。
最近、このスレさびしいので、こっちにも情報流してほしいなあ。
また粘着君が現れるかもしれないけど。
0940営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 19:15:48.560941営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 19:42:20.900942デフォルトの名無しさん
2012/04/12(木) 00:06:44.730943デフォルトの名無しさん
2012/04/12(木) 21:06:51.63println("print")
とか書いたプログラム(test.scala)を,
scala test.scala > out.txt &
とかで実行すると,
[1] + suspended (tty output) scala test.scala > out.txt
とかなって,処理が終了しなくない?
0944デフォルトの名無しさん
2012/04/13(金) 09:42:56.030945デフォルトの名無しさん
2012/04/13(金) 09:54:01.05標準入力にttyinの代わりに/dev/null食わせるなりして
broken pipeにならないようにすればいいだけ
$ scala -e "println('hoge)" > /tmp/hoge.out < /dev/null &
0946デフォルトの名無しさん
2012/04/13(金) 11:16:03.57いや,でもJavaで同様なプログラムつくって,
java *** > out.txt &
で実行すると,正常に終了するよ.
0947デフォルトの名無しさん
2012/04/13(金) 11:34:38.64君、あたま悪いねってよく言われない?
0948デフォルトの名無しさん
2012/04/13(金) 12:22:03.81コンパイルしてjavaコマンドで実行してください
0949デフォルトの名無しさん
2012/04/13(金) 12:58:39.28普及したな。
0950デフォルトの名無しさん
2012/04/13(金) 14:38:59.30使い始めて1年だな.
0951デフォルトの名無しさん
2012/04/13(金) 14:41:59.44お互いに.
0952デフォルトの名無しさん
2012/04/14(土) 00:18:49.32http://www.scala-lang.org/node/12603
なんか重要な変更点あるの?
0953デフォルトの名無しさん
2012/04/14(土) 13:47:44.50Windowsのスタートメニューには、APIDocumentへのリンクくらいしか作られていない。
こんなもんだっけ?
2.9.1のときは、"Scala Interpreter"(REPL) とか、Uninstallerとか ScalaByExample等のPDF
へのリンクがスタートメニューに作られていたのだが。
とりあえず、scala>binの scala.bat でREPL起動させたりと、不満はないのだが。
0954デフォルトの名無しさん
2012/04/16(月) 10:20:17.770955デフォルトの名無しさん
2012/04/16(月) 11:22:29.390956デフォルトの名無しさん
2012/04/16(月) 12:18:19.08Windows 7 64bit, cygwin(mintty), scala 2.9.2.
0957デフォルトの名無しさん
2012/04/17(火) 01:28:19.22> そういえば,ScalaのREPLってバックスペース効かなくない?
Windows7 64bit, scala 2.9.2.msiでインストール
ctrl-hもBSキーも両方とも有効だった。
0958デフォルトの名無しさん
2012/04/17(火) 01:33:15.08直してみたら?
0959デフォルトの名無しさん
2012/04/18(水) 02:57:15.94とりあえずBSを^Hにするオプションあるからそれ設定した
0960デフォルトの名無しさん
2012/04/18(水) 15:47:48.02だった.
0961デフォルトの名無しさん
2012/04/18(水) 15:51:48.87array.indexWhere(_.id == 1)
とかやるとnullPointerExceptionになるけど,なんかエレガントな方法ってない
のかな・・・
0962デフォルトの名無しさん
2012/04/18(水) 16:22:29.15そもそもnull混じりの配列なんてさっさとOptionに変えたほうがいいと思うけど
あえて一行で書くならこんな感じで
array.map(Option(_)).indexWhere(_.exists(_.id == 1))
0963デフォルトの名無しさん
2012/04/18(水) 16:46:13.99array.indexWhere(x => x != null && x.id == 1)
0964デフォルトの名無しさん
2012/04/18(水) 16:51:10.41これOKってことは,x.idが評価されてないってことだよね.
x != null && x.id == 1
って,x != nullがfalseな時点で全体としてfalseになるのか・・・
0965デフォルトの名無しさん
2012/04/18(水) 17:01:39.920966デフォルトの名無しさん
2012/04/18(水) 19:28:11.50*p++
がどうなるかみたいな感じ.
0967デフォルトの名無しさん
2012/04/18(水) 19:35:51.10Scalaはどうかわからんけど、C系統はね
0968デフォルトの名無しさん
2012/04/18(水) 19:49:44.40短絡評価
http://ja.wikipedia.org/wiki/%E7%9F%AD%E7%B5%A1%E8%A9%95%E4%BE%A1
0969デフォルトの名無しさん
2012/04/18(水) 22:26:47.48きがするんだけど・・・
0970デフォルトの名無しさん
2012/04/18(水) 23:59:38.58あれ、シンタックスハイライトすらうまくいってないからメンテナンスしてほしいなあ
0971デフォルトの名無しさん
2012/04/19(木) 00:03:55.210972デフォルトの名無しさん
2012/04/20(金) 21:55:01.92開発は続いてるからgithubから落とせばOK
https://github.com/scala/scala-dist/tree/master/tool-support
0973デフォルトの名無しさん
2012/04/20(金) 23:47:52.15サンキューサー
0974デフォルトの名無しさん
2012/04/20(金) 23:52:18.61ないからvarで宣言しといて後で決定するってケースが時たまあるんだけど,
いい方法ない?
0975デフォルトの名無しさん
2012/04/21(土) 00:14:21.91最初に使うときには決定してるならlazy valを使えるけど
0976デフォルトの名無しさん
2012/04/21(土) 13:18:07.31class Hoge {
val v //今は決められないけど1回決まれば変更したくない
def foo {
v = ... //1回だけ可能
}
}
みたいな・・・
0977デフォルトの名無しさん
2012/04/21(土) 13:25:58.460978デフォルトの名無しさん
2012/04/21(土) 13:51:14.20これとか?
2回目以降の書き込みはエラーとかじゃなくて無視されるだけだけど
0979デフォルトの名無しさん
2012/04/21(土) 16:06:02.60困る.
0980デフォルトの名無しさん
2012/04/21(土) 21:55:10.88あるじゃん?
0981デフォルトの名無しさん
2012/04/21(土) 22:04:36.770982デフォルトの名無しさん
2012/04/21(土) 22:15:27.35http://toro.2ch.net/test/read.cgi/tech/1335014078/
0983デフォルトの名無しさん
2012/04/21(土) 22:37:22.870984デフォルトの名無しさん
2012/04/22(日) 01:47:27.570985デフォルトの名無しさん
2012/04/22(日) 01:53:43.930986デフォルトの名無しさん
2012/04/22(日) 10:32:32.94ありがとー
0987デフォルトの名無しさん
2012/04/22(日) 13:54:45.910988デフォルトの名無しさん
2012/04/22(日) 19:25:13.160989デフォルトの名無しさん
2012/04/22(日) 19:42:56.740990デフォルトの名無しさん
2012/04/22(日) 20:18:57.21part2スレを立てた人が2冊目という名前にしたからです。
Scala初代スレが立った時は英語のScala本さえなく、
出版予定や発売開始でスレが盛り上がりました。
それを見て冊目にする事を思いついたのでしょう。
4年前に初代スレを立てた人は目ざといですね。
http://www.indeed.com/jobtrends/Lisp,SML,Haskell,Scala,Clojure.html
0991デフォルトの名無しさん
2012/04/22(日) 21:04:39.930992デフォルトの名無しさん
2012/04/22(日) 22:06:15.58不満にもよるがensimeでどうよ
0993デフォルトの名無しさん
2012/04/22(日) 22:50:31.53インデントとか,改行時の挙動が不満なのでございます.
0994デフォルトの名無しさん
2012/04/23(月) 14:33:06.59普通に読めるソースと読みこなせなくてイライラするソースがある。
なんかPerlを思い出す気が・・・・・・
0995デフォルトの名無しさん
2012/04/23(月) 15:02:48.320996デフォルトの名無しさん
2012/04/23(月) 15:45:46.010997デフォルトの名無しさん
2012/04/23(月) 16:06:35.67高卒が使う言語 → Java、Objective-C
大卒が使う言語 → C#
エリートが使う言語 → Haskell
スーパーエリートが使う言語 → Scala
0998デフォルトの名無しさん
2012/04/23(月) 20:23:27.75最近はEffective Scalaとかもあるし。
0999デフォルトの名無しさん
2012/04/23(月) 21:15:16.811000デフォルトの名無しさん
2012/04/23(月) 21:22:06.76http://toro.2ch.net/test/read.cgi/tech/1335014078
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。