08/04/08 00:34:40
>>174は処理系実装と言語仕様の思考分離を(ry
176:デフォルトの名無しさん
08/04/08 01:11:10
>>175
いや、もちろんわかってるよ。ただ、処理系(というかパーザ)の実装のしやすさを
考えて、問題無い程度に構文を変えるというのは普通にあり得る話だと思う
177:デフォルトの名無しさん
08/04/08 01:28:03
D 言語なんかまさにそうだな。
実装しやすいような言語仕様にするってのを1つの柱にしている。
D 言語は構文解析と意味解析が 100% 分離可能。
逆に C++ とかは泥沼。全言語の中で最もパーサが作りづらい。
178:デフォルトの名無しさん
08/04/08 18:22:34
>>176
同意。ただ>>173のような例が「問題がある」程度の実装の難しさを引き起こすかな。
テーブル見る必要があるのはスマートじゃないけど、見慣れた記号の意味が変わらない、というのは
一つのメリットになり得るから、トレードオフとして検討する価値はあるんじゃないかなぁ。
けど、[とか]が単独で演算子として使われたことはないだろうから、それを<と>の代替として選んだ
Scalaの中の人は確かにちゃんと考えてるなーと思う。
179:デフォルトの名無しさん
08/04/08 18:23:45
>>177
C++なぞ問題外 (^^)
180:デフォルトの名無しさん
08/04/08 18:35:02
とりあえず参考資料 っ
> * Features of Ruby
> + Simple Syntax
(from README)
Pseudo simplicityとか言い張ってるやつだな。どこがpseudoって、parse.yの大きさ見れば分かる。
Rubyの主張は、見た目の良さと実装難易度は直交するということじゃまいか。
たしかにBrainf**kなんか挙げればそれっぽい気もするが、ある程度の複雑さを備えた実用的な
言語仕様でも上記が主張できるかどうかは、意見が分かれるところだろう。
(見た目がシンプルなら実装も簡単になりやすいんじゃないか、等々)
181:デフォルトの名無しさん
08/04/08 18:37:23
>>180
「見た目の良さ」だと曖昧だな。理解のしやすさ、くらいか。まぁその指標自体が曖昧だが。
182:デフォルトの名無しさん
08/04/08 21:54:49
>>174
不等号を連続させられないようにする、という選択肢もあるね。
183:デフォルトの名無しさん
08/04/08 23:21:05
>>180
> Pseudo simplicityとか言い張ってるやつだな。どこがpseudoって、parse.yの大きさ見れば分かる。
それだけだと単にyaccが適切な道具じゃなかったという可能性が否定できないよ。
184:デフォルトの名無しさん
08/04/08 23:25:20
>>183
Rubyの文法は、lexer/parserを分離する事が前提の構文解析アルゴリズム
は向いてない可能性はあるね。
185:デフォルトの名無しさん
08/04/08 23:52:00
Cが駄目だね。> 分離
186:デフォルトの名無しさん
08/04/10 23:23:22
>>183
LALR(1)が、なら同意だけど、単にyacc(bison)が、ならあんまり同意できないかも。
parse.y覗いたことある? あんなことやってたら他のパーザジェネレータ使ってもコードが太りそう。
結局は>>184のが本質ついてるのかも。
187:デフォルトの名無しさん
08/04/10 23:34:41
とりあえず誰か、Scalaの超絶技巧を使って[Type]を<Type>と書けるようにするライブラリの実装ヨロスコ
// TypeじゃなくてKlassか?
188:デフォルトの名無しさん
08/04/11 00:03:10
>>187
さすがにそりゃ無理があるw
Camlp4みたいに標準的な構文拡張のための方法が用意されてるならともかく
Scalaではそういうのは無いはずだし
189:デフォルトの名無しさん
08/04/11 00:15:09
>>186Rubyをわかってねーな。プログラマのためにあえてあーなってんだろうが。
190:186
08/04/11 01:55:57
>>189
んと、言語として「プログラマのためにあーなって」るのは否定も嫌悪もしてないっす。
ただ、とりあえず現状の(というか「lexer/parserを分離する事が前提…」であると?)
実装は、大変そうだな、と。lex_stateとかlex_stateとか。
だからといって、プログラミング言語の文法に置ける、人にとってのsimplicityの定義:
LALR(1)に収まること。
っていうのは違うよなぁ。
おぉっと、Scalaな話からそれてしまう。いいかみんな、共産ゲリラたちが発する電磁波は……
191:デフォルトの名無しさん
08/04/12 00:27:00
>>189
Ruby書きづらいし遅くて使い物にならないけど
192:
08/04/12 01:23:41
Scalaの日本語版Wikipediaには影響を受けた言語にRubyが入ってるけど、英語版にはない。
193:デフォルトの名無しさん
08/04/12 01:48:56
>>192
それはひどいな
捏造かよ
194:デフォルトの名無しさん
08/04/12 03:18:59
もうRubyはいいって。
内容のある比較もないし。
195:デフォルトの名無しさん
08/04/12 08:57:01
>>191
負け惜しみ乙。どこがどう書きづらいんだよw
196:デフォルトの名無しさん
08/04/12 12:30:55
てかscalaとrubyってユーザそんなに被らないと思うけどなあ
RoRとかが出てきてから流行に乗っかるような「現実的な」ユーザにとっては
今のscalaはまだ使う価値がないと思うし
197:デフォルトの名無しさん
08/04/12 12:59:55
Ruby信者はRubyより優れている所があると言われる言語にでていく習性があってだな…
格下認定(HSP,PHP,LISP,VBあたり)されるか、信者(HaskellとかErlang?)が突撃してくるかくらいしか選択肢がない。
198:デフォルトの名無しさん
08/04/12 16:37:37
>>195
うわぁ・・・Ruby信者いいかげんにしろ
199:デフォルトの名無しさん
08/04/12 17:42:28
こたえられないんですね。
完膚なきまでに論破。
200:デフォルトの名無しさん
08/04/12 17:47:39
信者なのかアンチの嫌がらせなのかの区別がつかない。
どちらにしてもScalaの絡まないRubyの話は
Ruby関連のスレかLLスレでやってほしい。
201:デフォルトの名無しさん
08/04/12 21:26:20
Railsにブチ切れた外人がフレームワーク作った模様
InfoQ: David Pollak氏 lift と Scala を語る
URLリンク(www.infoq.com)
202:デフォルトの名無しさん
08/04/12 22:17:14
>>189,191,198,199あたりはRubyを貶めようとする輩の自作自演の可能性が高い。
本当のRuby信者がRubyの心証が悪くなるような行動をするわけがない。
203:デフォルトの名無しさん
08/04/12 22:23:48
まつもとゆきひろが率先してやってる件について
204:デフォルトの名無しさん
08/04/12 22:25:39
>>202
>>195が抜けてるけど>>195ですか?
205:デフォルトの名無しさん
08/04/12 22:29:16
すまん、訂正する。>>189,191,195,198,199あたりはRubyを貶めようとする輩の自作自演だろ。
206:デフォルトの名無しさん
08/04/12 22:56:28
なんでもかんでもアンチのせいにしてごまかそうとしてるな酷すぎる
207:デフォルトの名無しさん
08/04/12 23:21:34
>>202-206
>200
>どちらにしてもScalaの絡まないRubyの話は
>Ruby関連のスレかLLスレでやってほしい。
どうでもいいけどRubyスレのほうが盛りあがっててワロタ
良く釣れる連中だから遊んでもらえるんだな
208:デフォルトの名無しさん
08/04/12 23:26:34
そんなことより2.7.1RC1が出てるぞ
バグフィックス中心だけど、簡単な正規表現ライブラリも追加されている
209:デフォルトの名無しさん
08/04/12 23:30:28
正規表現だってー!!
210:デフォルトの名無しさん
08/04/13 10:26:23
java.util.regex.*でいいじゃん...
211:デフォルトの名無しさん
08/04/13 12:18:10
鬼車キボン
212:デフォルトの名無しさん
08/04/13 13:23:47
またRuby厨が沸きそうなネタを…
213:デフォルトの名無しさん
08/04/13 14:12:42
PEGの方がいいじゃん
214:デフォルトの名無しさん
08/04/13 14:45:28
>>210
いや簡単なjava.util.regexのラッパー
215:デフォルトの名無しさん
08/04/13 15:19:47
自前LL作るときにJVM利用する価値があるのは同意する。
しかしライブラリまでラッパでおk、ってのはいかがなものか。
たしかにJavaの豊富かつ実績のあるライブラリが使えるのはすげーメリットだが、
自前言語に合った、使いやすい物をもっと作れるはずだろ。インタフェース的な意味で。
藻前らが独自言語を設計してもJVMの命令列に落とすのと同じだ。
独自インタフェースのライブラリを設計して、標準ライブラリを利用しろよ。
Java標準パッケージ脳乙。
ということを繰り返し書いている漏れは……うー。
もしこれ以上雑多な拡張が必要になる将来が来るなら、それよかPEGにしたらいいと思う。 >regex
216:デフォルトの名無しさん
08/04/13 16:23:42
なんだregexリテラルくらい作ってくれればいいのに
217:デフォルトの名無しさん
08/04/13 17:42:33
>>216がフラグ立てた。(リテラルっぽい表記をライブラリで実現する的な意味で
218:デフォルトの名無しさん
08/04/13 18:00:15
まあ、"abc".r で正規表現オブジェクトができるから短かくは書けるけど
219:216
08/04/13 19:53:32
>>217
Scala触ったこともないんだけどだいぶ待ってもらっていい?
……と書こうとしたら>>218でオワタ
220:デフォルトの名無しさん
08/04/13 20:12:23
/abc/と書けないのは中途半端だな。
221:デフォルトの名無しさん
08/04/14 00:17:16
>>213
scalaにPEGライブラリってあったっけ?
222:デフォルトの名無しさん
08/04/14 00:35:08
>>221
無いけど、Parser Combinatorがそれに近い
223:デフォルトの名無しさん
08/04/14 07:24:37
PEGとParser Combinatorってどうちがうの
224:デフォルトの名無しさん
08/04/14 16:41:54
>>218
いっそのこと、文字列から正規表現への暗黙の変換を定義するというのはどうだろう
以下のような感じで(2.7.1.RC1じゃないと動かないので注意)
import scala.util.matching.Regex
implicit def string2Regex(s :String) :Regex = new Regex(s)
for(r <- "[0-9]+" findAllIn "123 456 789") println(r)
225:デフォルトの名無しさん
08/04/14 20:45:38
> 文字列から正規表現への暗黙の変換
実にPerlish……けど型が保証されるから問題無しか。すげ
226:デフォルトの名無しさん
08/04/14 22:06:50
毎回やるのは嫌すぎるぞ。Emacsのようにキャッシュ利かせるとかしないと。
227:デフォルトの名無しさん
08/04/14 22:09:35
個人的にはこのくらいで変換はしない方がいいと思うが
じゃあどういう基準で変換すべきかというのがわからんな
新技術はこういうところが困る
228:デフォルトの名無しさん
08/04/14 22:17:09
キャッシュねえ…こんな感じ?
import scala.util.matching.Regex
import scala.collection.mutable.HashMap
object RegexConversion {
private val cache = new HashMap[String, Regex]
implicit def string2Regex(key :String) :Regex = {
cache.synchronized {
cache get key match {
case Some(regex) => regex
case None =>
val regex = new Regex(key)
cache(key) = regex
regex
}
}
}
}
import RegexConversion._
for(r <- "[0-9]+" findAllIn "123 456 789") println(r)
229:デフォルトの名無しさん
08/04/14 22:18:34
>>227
まあ、自分で書いといてなんだが、俺もこういうケースで
implicit conversion使うのが良いかっていうのはちと疑問ではある
ただまあ、実害があまり無い使い方ではあると思う
230:デフォルトの名無しさん
08/04/15 00:16:55
これはひどい
231:デフォルトの名無しさん
08/04/15 01:06:52
>223
PEG: 文法の記法
Parser Combinator: パーザの実装方法の一つ(ちょっと違うけどそんなもん)
232:デフォルトの名無しさん
08/04/15 07:34:18
パーザコンビネータつうのは文法とか文法解析のアルゴリズムとは独立してるもんなの?
233:デフォルトの名無しさん
08/04/15 11:00:07
>>232
実際に使えるパーザコンビネータはほとんど再帰下降型(+バックトラック)だと思う
ただ、LRなどのボトムアップ型も作れないことは無い、はず
234:デフォルトの名無しさん
08/04/17 23:59:23
ScalaってWindowsでまともなプログラム書けますか?
サーバーサイドじゃなくって
Scala.netって止まってるような気がするけど・・・
235:デフォルトの名無しさん
08/04/18 00:04:09
うぜぇ。文句があるならRubyでも使ってろ。
236:デフォルトの名無しさん
08/04/18 00:19:33
WindowsユーザはScala使うな
237:デフォルトの名無しさん
08/04/18 00:23:10
知的水準の低い人はScalaを使わなくて結構です
238:デフォルトの名無しさん
08/04/18 00:34:56
なんだ。関数型言語ってやっぱり学者しか使わないか・・・
239:デフォルトの名無しさん
08/04/18 00:51:52
ごめん、嘘です。気を悪くしたらスマソ。
「自分がやられて嫌なことは、他人にしたらいけない」って死んだ猫いってたのを思い出した・・・
240:デフォルトの名無しさん
08/04/18 14:23:55
何この流れw
241:デフォルトの名無しさん
08/04/18 19:13:35
>>234
ScalaでWindowsのGUIプログラム書けるかって話なら
Swing/AWT使うか、SWT使うくらいしか選択肢は無いんじゃない?
242:デフォルトの名無しさん
08/04/18 19:26:24
「まとも」=「GUI」!
243:デフォルトの名無しさん
08/04/18 19:55:27
>>241
.NET対応がちゃんとしてくれるんなら、それでいいっす^^
244:デフォルトの名無しさん
08/04/18 20:04:12
>>242
234の文章から、234の考える「Windowsのまともなプログラム」を推測すると、
俺もそうなる。
245:デフォルトの名無しさん
08/04/18 20:18:19
>>242
>>244の書いてる通り、234の文章から、234が考える「Windowsのまともなプログラム」
=GUIプログラムのことと推測したまで。俺自身が「Windowsのまともなプログラム」=
GUIプログラムのことだと考えてるわけじゃない
246:デフォルトの名無しさん
08/04/18 20:27:57
SWT使えば見栄えも問題ないよ
247:デフォルトの名無しさん
08/04/19 09:26:39
あんな低レベルのGUIに満足してるの?
248:デフォルトの名無しさん
08/04/19 09:44:53
俺はGUI全く使わない。
249:デフォルトの名無しさん
08/04/19 10:36:08
GUIも使えるけどあえて使わないってこと?今だにキャラクタベースのUIのほうが玄人っぽいとか、そんな発想?
あなたのような人には文字ベースで十分なのかもしれないけれど、一般的な用途にはGUIが必要とされる時代なんです。いい加減わかってください。
250:デフォルトの名無しさん
08/04/19 10:59:27
お前のことはお前が決めろ。
251:デフォルトの名無しさん
08/04/19 11:10:36
>>247
世の中はOSと違うインターフェースは敬遠されるらしい
252:デフォルトの名無しさん
08/04/19 11:13:56
必要なものを自分で作る能力のないプログラマが飛び付く言語じゃない。
253:デフォルトの名無しさん
08/04/19 12:20:38
>>242>>244
おそらく、>>234=>>243なので、さらにその内容を合わせると
>>234の考えるまともなプログラム
=「.NET Framework を使ったGUIプログラム」
というように読める。
254:デフォルトの名無しさん
08/04/20 17:51:36
どちらかというと言語がプログラマの要求についてこれれてない部分があるっつーことでしょ。
その辺を他言語と比較されるとすぐファビョりはじめる奴がいるのが困りものだね。
255:デフォルトの名無しさん
08/04/20 21:28:40
.NET対応ってそんなに要求あるのかな?
Java VMで十分な気がするけど
256:デフォルトの名無しさん
08/04/22 21:33:18
Introduction to SDT
URLリンク(www.codecommit.com)
期待。
257:デフォルトの名無しさん
08/04/23 00:55:30
Emacsにも補完つけてほしい
258:デフォルトの名無しさん
08/04/23 01:33:45
Stream.const がはじかれるんですが、これっていつからの関数ですか?
259:デフォルトの名無しさん
08/04/23 01:54:41
Stream.consのことか?
260:デフォルトの名無しさん
08/04/24 02:41:40
>>259
いや。実際にStream.constというメソッドがある。
たとえば、Stream.const(1)とすると、1のみを含む無限Streamが生成できる。
261:デフォルトの名無しさん
08/04/27 11:00:01
ふと聞きたいのですが、Scala以外にどんな言語に興味ありますか?
Scalaを使ってらっしゃる方が普段どんな言語つかっているのか知りたいです。
262:デフォルトの名無しさん
08/04/27 11:42:13
JavaとRuby
263:デフォルトの名無しさん
08/04/27 12:39:15
JavaとRubyかな。最近はErlangに手を出し始めてる
264:デフォルトの名無しさん
08/04/29 15:46:25
>>193
small talkも知らない馬鹿が書いているんだろwww
無視しろ。
265:デフォルトの名無しさん
08/04/29 20:12:31
ScalaはRubyの影響をうけているよ。
266:デフォルトの名無しさん
08/04/29 21:23:18
>>265
まあ、受けてる可能性は否定できないけど、明らかに影響を受けてる
という程じゃないなあ。Groovyくらいそっくりだったら、話は別だけど。
267:デフォルトの名無しさん
08/04/30 02:42:57
>>264
他人を罵る前にだ。
Smalltalkを区切るな、ボケw
268:デフォルトの名無しさん
08/04/30 22:17:30
>>264
くだらない釣りはヤメロよ
269:デフォルトの名無しさん
08/04/30 23:05:54
JJUG Cross Community Conference の Scala のセッション、えらい盛況でワロタ:-)
270:デフォルトの名無しさん
08/04/30 23:14:43
URLリンク(shootout.alioth.debian.org)
271:デフォルトの名無しさん
08/05/04 19:50:05
既出かもしれんけどscalaの動画が紹介されてた。
関数型言語mlのすれ
272:デフォルトの名無しさん
08/05/06 16:48:05
Scala 2.7.1.final
URLリンク(www.scala-lang.org)
273:デフォルトの名無しさん
08/05/07 19:49:29
>>271
Scalaの動画ってこれか
URLリンク(www.youtube.com)
274:デフォルトの名無しさん
08/05/09 23:39:00
>>271
ニコニコ動画で見つけました。
関数型言語Scalaの動画もう一つ
URLリンク(www.nicovideo.jp)
275:デフォルトの名無しさん
08/05/10 14:28:21
>>274
>>1乙wwww
276:デフォルトの名無しさん
08/05/10 14:33:51
>>1 なのかwww
277:デフォルトの名無しさん
08/05/10 14:34:18
Rubyの人とけんかしてるので仲良くして欲しいwww
278:
08/05/10 18:50:55
記法が柔軟性あるみたいだけど、そのためIDEのインテリセンスつくるの大変そうだね。
EclipseのJavaエディタ並みの賢い開発環境があればJavaから乗り換えたいけど。
279:デフォルトの名無しさん
08/05/10 20:20:11
>>274
「スレを立てる」クソワロタ
その結果がこのスレかwww
280:デフォルトの名無しさん
08/05/11 03:07:41
emacsで充分
281:デフォルトの名無しさん
08/05/11 12:09:33
>>278
開発中のEclipse用プラグインが割と頑張ってる感じ
282:
08/05/12 07:55:41
>>281
そうなのか、使ってみる。
283:デフォルトの名無しさん
08/05/12 13:55:30
Eclipse で実行のたびに Run Configuration が増殖するのは仕様ですか?
284:
08/05/14 04:39:03
Scalaって文の区切りに;が必要ないの?
なんか怖いです。
285:デフォルトの名無しさん
08/05/15 14:44:24
誰でもはじめては怖いもんだ
286:デフォルトの名無しさん
08/05/15 21:35:10
>>284
関数型言語などでは ; が必要ない方が普通。
HaskellやOCamlなんかでも;は必要ない。
287:デフォルトの名無しさん
08/05/15 21:49:16
ありますよ。
288:デフォルトの名無しさん
08/05/15 23:52:14
必要だけど必要じゃない。
289:デフォルトの名無しさん
08/05/16 03:05:20
Lispだとセミコロンはコメントアウトだな。
290:デフォルトの名無しさん
08/05/17 08:43:04
JavaとRubyとScalaの比較
URLリンク(codezine.jp)
291:デフォルトの名無しさん
08/05/17 15:35:15
Scalaの文法でDみたいなネイティブコンパイラって作れないかな。
292:デフォルトの名無しさん
08/05/17 18:38:06
単にネイティブバイナリがほしいだけだったらgcjであれこれ挑戦してみたら委員では
293:デフォルトの名無しさん
08/05/20 10:25:32
inforno :: Scalaでスタック指向言語をサクッと実装する
URLリンク(inforno.net)
294:デフォルトの名無しさん
08/05/21 23:03:40
scalaって遅延評価あるんだな。
最初からそれ言ってくれたら切り捨てたりしなかったのに。
295:デフォルトの名無しさん
08/05/21 23:11:11
お前の方が切り捨てられたんだよ。
296:デフォルトの名無しさん
08/05/22 18:11:38
煽られたら乗るよ?
scalaに意志はないから切り捨てるも切り捨てないも人の意志にゆだねられる。
scalaと人を混同しないでくださいね。
それとも、scalaたんとかいって擬人化してるキモオタくんですか?
297:デフォルトの名無しさん
08/05/22 20:11:14
scalaたんの擬人化マダー?
298:デフォルトの名無しさん
08/05/23 05:02:26
>>296
君、さぞ国語の成績が悪かったろうな。
299:デフォルトの名無しさん
08/05/23 05:38:47
>>296
乗るにしてもその乗り方はないだろ。
>scalaに意志はないから切り捨てるも切り捨てないも人の意志にゆだねられる。
って、どんな返しだよ。
というか、返しにすらなってないか・・・。
300:デフォルトの名無しさん
08/05/23 05:48:16
>>296
煽られたら乗るよ?
> scalaに意志はない(後略)
まず、議論の前に、どのような哲学的立場をもとにしているのかをハッキリしてもらおうか。
301:デフォルトの名無しさん
08/05/23 05:48:24
>>296
scalaにはMartin Oderskyの意思が宿っている
と返して欲しかったんですね。
わかります。
302:デフォルトの名無しさん
08/05/23 05:54:40
キモオタとか言って煽ってる本人が
なんか凄くオタクに詳しいっぽいのがたまらんね
沸いた頭で煽りを書き殴ったら、自分が普段言われてるモノが出てきました、みたいな
303:デフォルトの名無しさん
08/05/23 07:50:20
どんな言い方してみても>>294が付いて行けなかった事にかわりはない。
304:デフォルトの名無しさん
08/05/23 08:44:58
>>294の書いたscalaたんが観たかった…
305:デフォルトの名無しさん
08/05/23 09:27:29
codezineのメルマガのタイトルに scala が出てきて吹いた
◆【Web】私がScalaを選んだ理由
最近自分の中でScalaという言語が熱い。RubyやPython等のスクリプト言語や、
JavaやC#等現在のエンタープライズ領域を支える言語、HaskellやErlangといった
関数型言語もある。そんなにいっぱいいい言語がある中で,なぜ今Scala
なんだろう?そんな理由を解説してみたいと思います。
URLリンク(codezine.jp)
306:デフォルトの名無しさん
08/05/23 11:33:17
>>303
scalaを一見したらどう見えるかというと、
・JAVAのクラスファイルはくの?つまり所詮はJAVAの亜種ってこと?JAVAにはウンザリなんだよなぁ
・クラス?なんだ、またオブジェクト指向言語か。ツマンネ。
・アルジェブライックデータタイプなし?キモ。おいおい、どこが関数型言語だよ。
・しかも見た目は完全手続き型言語っぽい。
遅延評価以外これといった特徴無いですよね。
307:デフォルトの名無しさん
08/05/23 17:23:39
>>306
英語docの読めない香具師はScalaに手を出すなw
308:デフォルトの名無しさん
08/05/23 17:35:11
>>307
既存のプログラミング言語が多すぎて新しい言語が出てきても大して興味もでないのに、
ドキュメントまで見ようと思うわけがないだろ?w
ブログを見ていて、たまたま言語の紹介があったら読む程度。
言語に興味を持つか持たないかが決まるのはせいぜい5分程度だ。
まぁ、言語の特徴を説明しきれていない糞ブロガーが全部悪いわけだがwww
309:デフォルトの名無しさん
08/05/23 17:39:56
そうやってすぐ雑草を生やす
310:デフォルトの名無しさん
08/05/23 17:58:10
まぁ、小物アプリ作者の俺としてはネイティブ吐いてくれない時点でアウト
311:デフォルトの名無しさん
08/05/23 18:04:47
遅延評価以外これといった特徴無い言語に興味を抱いて、ここに来たの?
312:デフォルトの名無しさん
08/05/23 18:06:31
>>311
遅延評価が実装されている言語を挙げてみろ。
思いつく限りでは片手に収まる。
313:デフォルトの名無しさん
08/05/23 20:16:42
>>312
Haskell
Scala
Clean
UnLambda
314:デフォルトの名無しさん
08/05/23 21:21:34
>・JAVAのクラスファイルはくの?つまり所詮はJAVAの亜種ってこと?JAVAにはウンザリなんだよなぁ
>・クラス?なんだ、またオブジェクト指向言語か。ツマンネ。
さすがにこの釣り餌は、おいしそうじゃないな。
315:デフォルトの名無しさん
08/05/23 21:27:18
じゃあ食いつくなよw
316:デフォルトの名無しさん
08/05/23 21:29:16
ごめw
317:デフォルトの名無しさん
08/05/24 01:10:13
自分が食いついた餌の低質さをいくら口にしたところで、相手のレベルじゃなく
「そんなのに食いついた自分のレベル」の低さをアピールするだけなのにね(相手には1ポイント入る)。
318:デフォルトの名無しさん
08/05/24 01:17:48
ごめん、わるかったって
319:デフォルトの名無しさん
08/05/24 01:45:38
>>312
OCaml
pypy
320:デフォルトの名無しさん
08/05/24 03:59:21
>>306
頭悪そうだね
321:デフォルトの名無しさん
08/05/24 04:00:25
>>312
> 思いつく限りでは片手に収まる。
なんて無知な…
322:デフォルトの名無しさん
08/05/24 12:58:25
なんだここの奴ら・・・
まだHaskellスレの方が「できた」人間が多いぞ・・・
323:デフォルトの名無しさん
08/05/24 12:59:02
スレ住人の人間性を見てもわかる。
この言語はJavaの系列なんだな。
324:デフォルトの名無しさん
08/05/24 14:11:12
Javaじゃないのが最大の利点。
325:デフォルトの名無しさん
08/05/24 15:03:27
JVMに縛られたローカル言語
326:デフォルトの名無しさん
08/05/24 15:08:52
>>322-324
Haskellの名前だけ挙げてPD.Martin Oderskyに直接何も言えないのって恥ずかしいよな
327:デフォルトの名無しさん
08/05/24 15:09:00
もうJVMを次期windowsに埋め込めばいいんじゃね?
328:デフォルトの名無しさん
08/05/24 15:11:55
>>326
俺はscalaのこと何もしらねーもん^^
俺が批判してるのが言語scalaだと思っていたら大間違いだぜ。
お前らを含めたコミュニティと広報活動全般についてなんだよ。
「外」の人間がどう感じるか感想を言ったまでさ。
お前ら被害妄想ひどすぎwww
329:デフォルトの名無しさん
08/05/24 15:25:30
>>328
> 俺はscalaのこと何もしらねーもん^^
( ´,_ゝ`)プッ
330:デフォルトの名無しさん
08/05/24 15:42:11
>>329
頭の可哀想な子に触るの禁止ーーー!!
331:デフォルトの名無しさん
08/05/24 15:46:29
俺が思うに、コミュニティが健全であるためには、Javaとのつながりを完全に切った方がいいと思うんですよ。
>>329-330のような奴らをJavaに隔離すべきだと思うんです。
332:デフォルトの名無しさん
08/05/24 15:47:06
っていうかさ、数学出来ないやつが関数型言語さわるなよ^^^
333:デフォルトの名無しさん
08/05/24 15:47:46
「このマスにとまったら、ム板のScalaスレを荒らしてくる」
とかいうゲームなんだよ。
334:デフォルトの名無しさん
08/05/24 15:49:36
>>328
> お前らを含めたコミュニティ
2chをコミュニティ認定しないでくれ
335:デフォルトの名無しさん
08/05/24 16:49:54
>>334
馬鹿にそんなこと言っても始まらないだろ。
336:デフォルトの名無しさん
08/05/24 16:57:08
>>334
妄想がどうのと言い出す人が、むしろ自分こそ激しい妄想を前提としているのはよくある話。
つまり、自分が言われると致命的な指摘を、先に相手になすりつけておく手法。
337:デフォルトの名無しさん
08/05/24 17:01:32
自己投影化ですねわかります
338:デフォルトの名無しさん
08/05/24 18:38:40
>>328
人間やコミニティまで批判するのはやめような。
フレームにしかならないよ
339:デフォルトの名無しさん
08/05/24 18:53:07
>>338
ああ悪かったな。
「活動」を批判すべきだったなw
340:デフォルトの名無しさん
08/05/25 04:52:14
もう引くに引けなくなってるのねw
341:デフォルトの名無しさん
08/05/25 06:57:59
>>332
関数型さわって慣れてから、数学勉強するのでいいと思う。
342:デフォルトの名無しさん
08/05/25 22:50:07
興味持てないのにいちいち荒らしにくる>ツンデレ
343:デフォルトの名無しさん
08/05/26 02:18:42
というか、このところのScalaの取り上げられ方を見て
「なんか落ち着かない気分になった」Ruby信者では。
344:デフォルトの名無しさん
08/05/26 06:35:01
序盤に遅延評価を連呼していたあたり、遅延評価で切り捨ての子じゃないのか?
345:デフォルトの名無しさん
08/05/26 18:19:49
C#並にIDEの支援が充実してくれるといいんだが・・・・
;が省略可なんて仕様はIDEにとって厄介者にならないのだろうか?
346:デフォルトの名無しさん
08/05/26 21:27:38
;を書かなくていい言語が変に思うヤツは、プログラミング言語知らなさすぎ。
他の言語も知っといた方がいい。勉強しろ。
347:デフォルトの名無しさん
08/05/26 21:42:27
勉強の問題じゃないが。
348:デフォルトの名無しさん
08/05/26 21:49:59
アホが勉強しろとか言ってるの見ると滑稽でたまらん
349:デフォルトの名無しさん
08/05/26 21:50:08
そういや、VBのインテリセンスは完璧だったな
350:デフォルトの名無しさん
08/05/26 22:11:23
Haskell知ってるヤツと、Javaしか知らないヤツのコードを見ると、同じScalaでも全然違う。
あたりまえだが。
351:デフォルトの名無しさん
08/05/27 20:28:26
荒れてるなあ
とりあえず、Algebraic data type相当の機能はScalaにもあるよ
あと、Scalaの特徴と言ったらやっぱりimplicit conversion/parameterとか
Extractorとかじゃないかと個人的には思う
352:デフォルトの名無しさん
08/05/27 20:29:35
>>345
Visual StudioとかEclipse並にはまだ程遠いけど、Scalaで書き直された
新Scala Eclipse Pluginは結構補完頑張ってるよ。implicit conversionで
追加されたメソッドとかも補完してくれる。
353:デフォルトの名無しさん
08/05/27 20:48:15
>>343言い得て妙だな。まさにそんなのが身近にいるのでツボった。
354:デフォルトの名無しさん
08/05/27 22:15:41
またいつもの浮気癖か>Ruby信者
浮気するくせに浮気相手にRubyを求めるからなあ。
355:デフォルトの名無しさん
08/05/27 22:27:06
;と{ばかりの言語しかやったことない俺涙目
そんな人は何からやればいいですか?やっぱりHASKELLとかですか?
356:デフォルトの名無しさん
08/05/27 23:15:50
あと、SmalltalkとSchemeかな。
357:デフォルトの名無しさん
08/05/27 23:20:30
>>354信者のふりしたアンチに騙されてるんだよ。Rubyistは向上心のある人格者が多い。
358:デフォルトの名無しさん
08/05/27 23:42:38
間を取って、Ruby信者とRubyistは違うということでこの話はお開き。
359:デフォルトの名無しさん
08/06/02 18:18:44
>355
ここは forth で
360:デフォルトの名無しさん
08/06/10 10:17:32
本家ホムペ落ちてる!><;
・・・
大幅リニューアルということか?
361:デフォルトの名無しさん
08/06/10 20:53:23
>>360
いつまで落ちてたのか知らんが、もう復旧してるよ
Webページのデザインは以前と特に変化無し
362:デフォルトの名無しさん
08/06/10 21:15:06
1つだけ、def という適当な予約語が気に入らない
363:デフォルトの名無しさん
08/06/11 01:07:42
じゃあdefunで…
364:デフォルトの名無しさん
08/06/11 02:02:47
>>362
じゃあ、defineだったら良かった?予約語って特に頻繁に
使用するものは、省略形を使ってでも短くした方が良いと思う
どうせ予約語の数なんて知れてるし、覚えることの労力よりも、
短くすることのメリットの方が大きいと思う
365:デフォルトの名無しさん
08/06/11 02:05:03
あと、defって予約語自体は結構メジャーなものだと思う。俺が知ってる言語では
Ruby,Python,Groovy,Scala,Nemerle,が採用してるな。Nemerleはかなりマイナーだと
思うが
366:デフォルトの名無しさん
08/06/12 00:27:39
クラスの宣言がclassなんだから、
メソッドの宣言はmethodでいいじゃん。
367:デフォルトの名無しさん
08/06/12 03:41:56
def か fun がいいな
368:デフォルトの名無しさん
08/06/13 20:31:18
ユニットテストフレームワークは何を使っていますか?
JUnit、TestNG、SUnit、ScalaTest、と色々な選択肢があるので迷っています。
369:デフォルトの名無しさん
08/06/15 09:50:53
def, fun は飽きた。df, fn とかしてほしい。
370:デフォルトの名無しさん
08/06/15 10:54:52
ディスク残量の表示をファンクションキーに割り当てたいんですね。わかります。
371:デフォルトの名無しさん
08/06/15 10:58:37
Scala の関数プログラミングが理解できません。
ScalaTutorial.pdf を読んでみました。Martin Odersky は scala で OOP
language と functional programming を統合して compose program を目指
していると理解しています。
でも tunctional programming は状態を持たないこと、変更できるデータが
存在しないことが特徴です。関数呼び出しに side effect がないことが特徴
です。 Python は、既存の関数に side effect があることから本格的な
functinal programming には踏み込もうとしません。Scala では関数の
side effect をどうやって防いでいるのでしょうか?
私には Scala の関数プログラミングは side effect を許しているとしか思
えません。もしそうだとすると、scala の関数プログラミングは偽関数プロ
グラミングだとも言えると思います。
372:デフォルトの名無しさん
08/06/15 11:07:44
tunctional programmingと言われても…
Scalaは関数型言語じゃないよ。
373:デフォルトの名無しさん
08/06/15 11:34:45
機能として見た場合、参照透明自体はそんなに重要じゃないでしょ
並列処理とか遅延評価のときに都合がいいだけで
それに純粋な関数型言語っていわゆる関数型言語の中でも一部分であって
純粋じゃなかったら偽というのも極端な気がするけど
374:デフォルトの名無しさん
08/06/15 13:27:32
371 です。
>純粋じゃなかったら偽というのも極端な気がするけど
同意します。
でも、side effect 使いまくりの pattern match: match .. case ... を書
いていたら、それは偽関数プログラミングと言っても良いでしょう。そして
scala は、それを許しているように思えます。Stateless, immutable にす
るのはユーザーの努力に委ねられているように思えます。違いますでしょう
か。
375:デフォルトの名無しさん
08/06/15 13:59:00
それはプログラミングスタイルの話で、言語がどうかって話とはちょっと違う気がする。
376:デフォルトの名無しさん
08/06/15 13:59:56
ん?よくわからん
パターンマッチと副作用がどう関係してるんだ?
377:デフォルトの名無しさん
08/06/15 14:16:17
>>374
>それは偽関数プログラミングと言っても良いでしょう。
誰にも会わずに一人で呼ぶ分には別に良いんじゃない?
>Stateless, immutable にするのはユーザーの努力に委ねられているように思えます。
という言語は別にScalaが最初という訳じゃないというか歴史に何度も登場したものに思われ。
URLリンク(user.ecc.u-tokyo.ac.jp)
>関数的プログラミングとは,副作用ではなく,値を返すことで動作するプログラムを書くことだ.
>副作用とはオブジェクトの破壊的な変更(rplacaの使用等)や変数への代入(setqの使用等)を含む.
>副作用を使う数が少なく,その影響範囲もローカルなものであれば,
>プログラムの読み取り,テスト,デバッグは簡単になる.
>Lispのプログラムが必ずこの方法で書かれてきた訳ではないが,
>時を追ってLispと関数的プログラミングは次第に分かち難いものになってきた.
378:デフォルトの名無しさん
08/06/15 14:20:10
371 です
>パターンマッチと副作用がどう関係してるんだ?
Pattern match は functional programming の機能だと思います。ここで書
かれるコードは副作用のないものに限定されるべきだと思います。クラス・
データ・メンバーを設けて、それを操作するなんてしてはならないと思いま
す。そうでなかったら、compose program なんて実現できないでしょう。
379:デフォルトの名無しさん
08/06/15 14:22:31
>>378
> Pattern match は functional programming の機能だと思います
なこたーない
380:デフォルトの名無しさん
08/06/15 14:22:50
>>378
マッチングのときに副作用が起きるのがいけないということ?
それともマッチングの後の話?
compose programというのもよくわからんな
381:デフォルトの名無しさん
08/06/15 14:24:26
>>379
パターンマッチって関数型由来じゃないんだっけ?
382:デフォルトの名無しさん
08/06/15 14:28:51
>>378
要するにMartin Oderskyの謳い文句が煽りっぽくて気に入らないなら本人に言った方が良いよ。
副作用なしでプログラミングを行うという意味論的なテーマと、
単なるシンタックス(Pattern match)の議論がごっちゃになってる気がする。
「条件分岐の意味論」と「条件分岐が楽に書けるか」は全然別の話。
意味論の定義については偉い人に任せる。
URLリンク(d.hatena.ne.jp)
383:デフォルトの名無しさん
08/06/15 14:35:32
>>369
そこで defun ですよ。Lisp 的に。
384:デフォルトの名無しさん
08/06/15 14:50:53
join計算では破壊的変数操作は許されるのですか?
385:デフォルトの名無しさん
08/06/15 15:09:24
>>381
由来は知らんがPrologとかにもあるだろ
だいたいパターンマッチングで副作用を否定したらawkの立場はどうなるんだよw
386:デフォルトの名無しさん
08/06/15 15:15:20
371 です
>マッチングのときに副作用が起きるのがいけないということ?
>それともマッチングの後の話?
cast ... ==> の後に書かれるコードで副作用があるものを呼び出さないの意味です。
>compose programというのもよくわからんな
下の Martin Odersky 自身の説明から持ってきました。彼はプログラムの部
品化を本気で可能にしようとしています。
URLリンク(video.google.com)
URLリンク(lampwww.epfl.ch)
>パターンマッチって関数型由来じゃないんだっけ?
関数型由来由来でしょう。switch case 文で置き換えられる代物ではないでしょう。
387:デフォルトの名無しさん
08/06/15 15:24:02
Pattern match は functional programming の機能
と
Pattern match は functional programming に由来
は別物だぞ
関数型言語以外でもパターンマッチングが見られるから前者は間違い
wikipediaによるとKen Thompson(Unixの作者)が作ったエディタや
SNOBOLが由来だから後者も間違い
388:デフォルトの名無しさん
08/06/15 16:01:39
なんちゃって知識を抱えて、新規言語に刃向かいに来たボクちゃんってことで決着ですか?
389:デフォルトの名無しさん
08/06/15 16:24:50
>381
『由来』と『機能』は別物。
Lispみたいにパターンマッチ前提にしていない関数型言語は普通にあるよ。
逆にC++のオーバーロードとかだって一種のパターンマッチだし。
>378
そんなつまらん理由で『べき』なんて断定するもんじゃないよ。
・Pattern Matchに失敗したときの挙動が複雑すぎて制御不能
・追加したパターンマッチの影響が他の関数に波及するリスクがある。
状態の管理が困難になる
とか具体的な理由ぐらい書いたら?
状態(副作用)の本質についてはガウディ本が詳しいので、一回読んでみたら。
390:デフォルトの名無しさん
08/06/15 16:24:56
>>386
だったら、通常のifとパターンマッチを区別して、パターンマッチを特別視する理由は?
パターンマッチって便利なifみたいなもんだと思っているんだけど
391:デフォルトの名無しさん
08/06/15 16:50:12
なんか不毛な議論になっとるなー
>>374の言っているのに合致するのって、HaskellとCleanくらいじゃね?
あと、パターンマッチについては強力なif文という認識くらいで良いと思うなー
392:デフォルトの名無しさん
08/06/15 18:18:32
パターンマッチ>判定にパターンのみ使用可>判定に副作用無し
Scalaのクラスフィールドは暗黙のゲッタ・セッタ呼び出し>
ゲッタ・セッタの明示定義でもフィールド名のみで呼び出し>
意図せざる副作用はそれらで相殺可
393:デフォルトの名無しさん
08/06/15 19:56:33
OCamlだとパターンマッチ使って、
let (x,y) = mouse_point in
printf "%dだお, %dだお" x y
とかできるけど、scalaだとどんななんだろ。
394:デフォルトの名無しさん
08/06/15 20:01:40
scala> val (a, b) = (1, 2)
a: Int = 1
b: Int = 2
こんなのなら動くよ
395:デフォルトの名無しさん
08/06/16 00:39:39
Tuple以外でも使えるけど、なんか違和感があるな
case class TypeA(val a:Int,val b:Int)
val TypeA(a,b)=TypeA(10,20)
println(a)
println(b)
396:デフォルトの名無しさん
08/06/16 01:48:47
>>395
違和感あるってのは単にパターンマッチ自体に慣れていないという
事じゃないかなあ。Scalaに限らず、SML,OCaml,Haskellなどでも同様の
事はできるわけだし
397:デフォルトの名無しさん
08/06/16 02:36:04
ちなみに1行目caseつけるならvalは要らない。
398:デフォルトの名無しさん
08/06/16 03:02:29
case関係なくval要らなくね?
399:デフォルトの名無しさん
08/06/16 10:28:28
>>398
いや、要るでしょ。case classにしなきゃパターンマッチの
対象にできない。もちろん、別途unapply定義したobjectを
定義すれば別だけど
400:デフォルトの名無しさん
08/06/16 10:50:05
あ、ごめん、意図を取り違えていた。case classじゃなきゃ、そもそも
valのあるなしに関わらずパターンマッチできないわけで、確かに
必要ないわな。
401:デフォルトの名無しさん
08/06/16 11:37:31
細かいことだが、unapplySeqでもおk
val s = "([0-9]*)(.*)".r
val s(x,y) = "123いちにさん"
println(x) // 123
println(y) // いちにさん
402:デフォルトの名無しさん
08/06/16 20:00:45
case classでは暗黙にvalだが、case以外でもvalやvarで
コンストラクタ引数もメンバ化できるのだだだだだだ
403:デフォルトの名無しさん
08/06/18 03:44:07
Javaでは
String.class
のように書くと、対象のクラスのインスタンスを作成せずに
Class型のオブジェクトを取得することができますが、
scalaで同様のことをするにはどのように書けばよいのでしょうか?
404:デフォルトの名無しさん
08/06/18 04:35:06
つ type
405:デフォルトの名無しさん
08/06/18 05:15:02
つ classOf[String]
406:デフォルトの名無しさん
08/06/18 06:13:01
>>405
ありがとうございます。探していたのは正にこれでした。
>>404
type a = b で型の別名が作れるんですね。
今回探していたものとは違いましたが、参考になりました。
407:デフォルトの名無しさん
08/06/19 12:55:22
def getFunc(fun:Option[String => _ <: AnyRef]) = {
fun match {
case None => null
case Some(f) => (i:String) => f(i).notify()
}
}
上記のコードをコンパイルすると notify() の部分でエラーになりました。
fがStringを引数に取る関数であるというところまでは推論できているのに、
fの戻り値がAnyRefを継承した型である事を推論できないのはなぜなのでしょうか?
408:デフォルトの名無しさん
08/06/19 16:08:45
Existential Type周りの推論の仕組みは正直よくわかっていないので
確定的な事は言えないのですが、推論できていないというより、どうもバグな気がします
たとえば、上記のコードを
def getFunc(fun:Option[String => _ <: AnyRef]) = {
fun match {
case None => null
case Some(f) => (i:String) =>
val a: AnyRef = f(i); a.notify()
}
}
とすると、コンパイルが通ることから、少なくともf(i)の返り値が
AnyRefのサブタイプであることは(コンパイラによって)認識されている
ように見えます。色々試してみたところ、以下のようなコードの場合
val fun: Option[String => _ <: AnyRef] = Some((s: String) => s)
val Some(f) = fun
コンパイラが
error: fatal error: bad type: ?(class scala.tools.nsc.symtab.Types$WildcardType$)
というメッセージを吐いて落ちるようです。この辺の事から推測すると、
Existential Typeとパターンマッチを組み合わせたときのバグのような気がしますが、
本当のところはわからないので、本家ScalaのMLで聞いてみるのが良い気がします
409:デフォルトの名無しさん
08/06/19 16:10:42
回避策ですが、Function Typeは、返り値についてcovariant
annotationが付加されているので、わざわざExistential Typeを使わずに、単純に
def getFunc(fun:Option[String => AnyRef]) = {
fun match {
case None => null
case Some(f) => (i:String) => f(i).notify()
}
}
とすれば良いです。これで、ちゃんと
getFunc(Some((s: String) => s))
などのコードをコンパイルできます
410:デフォルトの名無しさん
08/06/19 23:16:10
>>408-409
いろいろと試して頂き、ありがとうございました。
Existential Typeを使わないようにすることで、無事、動くようになりました。
英語は苦手なのですが、
そのうち、本家ScalaのMLでの質問にも挑戦してみようと思います。
411:デフォルトの名無しさん
08/07/09 08:47:29
ScalaのEclipsePluginは、Eclipseのどのバージョンで動きますか?
412:デフォルトの名無しさん
08/07/09 23:33:30
URLリンク(www.scala-lang.org)
413:デフォルトの名無しさん
08/07/31 19:30:46
プログラミングしりとり
スレリンク(575板)l50
414:デフォルトの名無しさん
08/08/21 01:19:30
Webサイトが変わった
415:デフォルトの名無しさん
08/08/21 09:21:03
Renewal ですな
NetBeans 用プラグインも追加されてる > ヘルプも含めて IDE 本体のオール
日本語化は NetBeans の方がダンゼン速いので日本人にとっては良い知ら
せか
ただし 6.5 以上だけど (現在日本語はまだ GUI のみか日本語開発版のみ)
416:デフォルトの名無しさん
08/08/22 02:27:02
Scala本5月には出版っていってたのにまだプレプリントか。
417:デフォルトの名無しさん
08/08/22 14:10:17
Scala本待てない人は、単なる個条的抜き書き程度のしろものですが
それまではこちらをどーぞ
URLリンク(www.h7.dion.ne.jp)
418:デフォルトの名無しさん
08/08/22 15:00:49
うはw こういうのうれしい。
英語のリファレンス読むのメンドくさくて、いまいちちゃんと理解できてなかったんで、
すげーうれしい。
419:デフォルトの名無しさん
08/08/22 21:31:43
>>417
これ、ただの機械翻訳じゃないの?
420:デフォルトの名無しさん
08/08/22 21:51:13
>>416
URLリンク(www.artima.com)
そろそろ出るんじゃないの?
421:デフォルトの名無しさん
08/08/22 21:51:42
機械翻訳はこういう文章を吐かないと思う
なんていうか、プログラマというよりは人文系の方が書いたような文章
422:417
08/08/22 23:32:47
プログラマ向け、でなくJavaとJavaScriptならわかる、という人を想定したら
こんな文章に。
Scalaは、そんな人たちの(関数型言語)入門学習用に向く言語仕様である
ように思われたので。
(つーか私自身にとっても最新の関数型言語の入門学習目的で言語仕様
原文から外せない部分を抜き出す形でまとめました(直訳はおろか意訳で
すらねぃです、でも原文読む参考程度にはなるはず)。ちなみにコンカレント
云々はまだわからない程度のレベルな私)
423:417
08/08/22 23:37:07
あーあといちばん最初に訳した言語仕様要約は直すべき部分が最多ですが
今はいろいろあって直すヒマがないのであしからず(私自身によるコメント部分
に集中してるので、そこの変なのは無視してくだされ。要約でない解説諸ペー
ジの方のが正しいです)。
424:デフォルトの名無しさん
08/08/22 23:42:12
>If you purchase just the PDF eBook for $27.50, you will be entitled to receive periodic updates as the authors
>complete the book, as well as the final PDF when the book is finished, for no additional charge. If you purchase PDF
>+ Paper Book combo for $59.99, you will be entitled to the PDF eBook updates, and we'll ship you the paper book
>when it is published, on or around August 30, 2008. (Once the book has been printed, you'll be able to purchase just
>the paper book here for $49.99.)
すいません。これ訳してください。
425:デフォルトの名無しさん
08/08/22 23:55:28
こんな感じか?
$27.50でPDF買ったら、本が完成するまで
追加料金なしでPDFのアップデート受けられるよ。
$59.99でPDFと紙の本買ったら、PDFのアップデートできるし、
10月30日くらいに出版されたら紙の本も送るよ。
出版後は$49.99で紙の本買えるよ。
426:デフォルトの名無しさん
08/08/22 23:57:21
August 30
8月30日、ですね
427:デフォルトの名無しさん
08/08/23 00:05:59
>>425-426
ありがとうございます!
もうすぐ発売日じゃないですか!
428:デフォルトの名無しさん
08/08/23 15:41:22
>>417
ひさびさに電波ぽい文章を見た
429:デフォルトの名無しさん
08/08/23 16:48:38
>>428
だなw
頑張ってくれたのに悪いが、行間びっちりな上にろくに段落を区切ってないから、
文章ではなくなんかの模様に見えてしまう。そんなだから最初の一文すら読む気が起きない。
430:デフォルトの名無しさん
08/08/23 17:34:52
>417
むむむ……典型的な『頭の良い人が書いた難しい文章』だな。
・文が長すぎ/意味詰め込みすぎ
・読者に必要な前提知識が多過ぎ
・話が発散しすぎ
ということでおいらもムリ。
自分も素人なんであんまり偉そうなことは言えないけど、
・一文の意味/意図が一つになるように文を解体する。
- ()の解説は多用しない。注釈で飛ばした方が良い。
- 直前の文までに出てきた言葉だけで文章を組む。新規の言葉は解説する。
・段落の基本構造(序破急)を意識して文章を構築する
・文章の基本構造(起承転結)を意識して段落や章を構成する
あたりだけでも注意すればずいぶん違うんじゃない?
431:417
08/08/23 20:41:20
いちばん最初のページの水平線から下は「言語哲学的意味論」なのでいわゆる
リファレンスとしては読む必要はまったくないです (つまり、この水平線は、ここから
下は「Scalaという言語に対する(個人的)注解」である、という意味です)
水平線から上の部分にザッと目を通したあとはそのまま「1階受付」へとお進みく
ださい (そこからはいくらかでもマシになってるかと)
432:417
08/08/23 20:47:00
あと行間は、私は逆に空いてると読みづらい方なので、直すかどうかは微妙です
Firefoxなら「スタイルシートを利用しない」すればほんの少しだけ行間が空いて字
ももう少しだけ大きくなるよーですが ...
433:デフォルトの名無しさん
08/08/23 21:11:55
行間以前の問題だろ>読みづらさ
434:デフォルトの名無しさん
08/08/23 21:27:38
>>417
論文ではなく、仕様書を書くようになればみんなの気持ちが分かるようになるよ。
435:デフォルトの名無しさん
08/08/23 21:47:37
>>430
頭がよいのとおかしいのと狭間くらいだと思う
436:デフォルトの名無しさん
08/08/23 21:59:18
これで難しいって、どれだけ土方なんだよ。
スタイルシートは変更したけど。
437:417
08/08/23 21:59:54
読みづらさについては申し訳ないですが、いずれこのScalaページは6月頃に
書いたもので (必要な人はググって自力で見つけるだろうと思いこちらでとく
には宣伝しませんでした; まだいろいろと不完全であるためもありますが)、今
はほかにやるべきことができてしまって当分私自身による修正は無理っす
ぬか喜びさせてしまって申し訳なひ、おのおの方
438:デフォルトの名無しさん
08/08/24 00:56:07
スタイルは俺も無効にしたw
これぐらい特殊な文体でもいいんじゃないかな。もちろんわかりやすいほうがいいが、
クセがあって読みにくいぐらいの文章でも、Scalaの雰囲気としてはあってるような気がする。
439:デフォルトの名無しさん
08/08/24 06:34:46
>>430
序破急! うーーーーん。
440:デフォルトの名無しさん
08/08/24 10:14:48
序破急 > 導入・展開・参考
起承転結 > 理由・これまでの過程・話者の新しい意見・新旧の比較
とゆーことではないかな?
ちなみに序破急は能の作劇論、起承転結は漢詩の構成論が由来
441:not 439
08/08/24 10:33:48
技術文書の段落に序破急はおかしいだろw
>>440の頓珍漢さに苦笑
442:430
08/08/24 12:35:13
>441
じゃあ導入->展開->結び で良いや。
さすがに段落ごとに全部この構成にするのはムリがあるけど、意識しないで
破綻するよりはマシですな。
>440
起承転結は序章の話になりますな。
各階の説明は概要->詳細の二段構成でも十分かな。
活用例は>440みたいな感じだけど、起の部分は『文章の全体像・説明範囲を規定する』という内容になるかと。
読者にまず「この文章は何について言及するのか?」というスコープを提示するわけですな。
ちなみに、序破急は能じゃなくて雅楽から来た言葉らしいよ(Wikipedia)
443:デフォルトの名無しさん
08/08/24 13:25:36
>>434
それは論文に対して失礼だw
>>417には悪いが、少なくとも、コンピュータサイエンス系の論文で>>417くらい読みづらい
文章は見た覚えがないよ
444:デフォルトの名無しさん
08/08/24 13:34:09
417のサイトは他のページの方が電波ゆんゆんでいい感じだ
445:デフォルトの名無しさん
08/08/24 15:15:12
Programming in Scalaって本当に8月30日くらいに発売されるの?
アマゾンとかに全然来てないんだけど・・・
446:デフォルトの名無しさん
08/08/24 15:47:49
417は括弧部分をごっそり削ると、ちょっとだけ読みやすくなるぞ。
ちょっとだけ、だけどな。
447:デフォルトの名無しさん
08/08/24 22:04:48
Amazonとかの普通の流通に乗るのかなあって気も。
448:デフォルトの名無しさん
08/08/25 00:06:02
え!?そんな立ち位置なの・・・
Scalaのサイトでしか発売されないのかなあ・・・
449:デフォルトの名無しさん
08/08/25 19:44:46
>>417とか人によませるブログとか一度書いてみた方がいいと思うよ
450:デフォルトの名無しさん
08/08/25 21:29:39
ところでProgramming in Scalaってどんな内容なの?
PDF読んだ人いますか?
451:デフォルトの名無しさん
08/08/25 22:45:57
pdf読める携帯買ったんで突っ込んでみたが、読みにくくて読んでないな
452:デフォルトの名無しさん
08/08/26 08:18:39
>>450
> どんな内容なの?
読め
453:デフォルトの名無しさん
08/09/02 12:51:20
Programming in Scalaって結局出版されたんですか?
454:デフォルトの名無しさん
08/09/02 14:36:35
日曜に本屋で見た。
455:デフォルトの名無しさん
08/09/02 21:47:42
マジで?
日本の本屋?
456:
08/09/02 22:14:25
うそだろ。ホームページ見たら
when it is published, on or around September 30, 2008.
ってなってた。また延期です。
457:デフォルトの名無しさん
08/09/07 10:06:41
この言語、groovy, jython, jrubyなどに対する利点は?
458:デフォルトの名無しさん
08/09/07 11:10:24
>>457
一つは速度
459:デフォルトの名無しさん
08/09/07 12:02:40
おお、それは凄い!
残りの二つ目以下26項目も挙げてくだされ。
460:デフォルトの名無しさん
08/09/07 12:04:16
jython > 本家にかなり遅れている
jruby > 元来 Rails と Java の共用が目的で、それ以外にあえて使う理由がない
groovy > Java 版 Rails のための言語だが失敗。Rails 利用者は Java を要せず、
Java 利用者は Rails を要せず
scala > 関数型パラダイムを Java に持ち込むための言語で、上 3 つとの類似は
あくまでその結果 (Python と Ruby が関数型パラダイムの影響を非常に
強く受けているため)
つーわけで利点云々以前に、もともとの存在理由がまったく異なります
461:デフォルトの名無しさん
08/09/07 12:40:59
え
その逃げはないっしょ
462:デフォルトの名無しさん
08/09/07 12:52:26
都合の悪い展開になったから逃げ呼ばわりするという逃げは
どうかと思います。
463:デフォルトの名無しさん
08/09/07 13:04:26
は?俺に都合のいい展開って何?各言語信者の醜い貶しあい?
464:デフォルトの名無しさん
08/09/07 14:11:14
結局Scalaのアドバンテージは特に無い、という展開。
465:デフォルトの名無しさん
08/09/07 14:45:10
Scalaの利点ねえ。
あえて挙げるならきちんとした型システムがあるとことかかな。
466:デフォルトの名無しさん
08/09/07 15:21:49
>>464
Javaで書くより100倍楽だけど、性能はJavaと同等。
でもEclipseのScalaプラグインはもうちょっとがんばって欲しい。
今だとまだEmacsのscala-modeの方が使い易い。
467:デフォルトの名無しさん
08/09/08 11:36:23
メッセージ駆動並行なコード書くのに
JMSとJMXでMDBと、ScalaのActorどっちが楽?
俺は断然Actor派
468:デフォルトの名無しさん
08/09/08 22:20:42
Erlang派
469:デフォルトの名無しさん
08/09/13 08:13:33
プログラミングしりとり
スレリンク(575板)l50
470:デフォルトの名無しさん
08/09/13 16:16:58
Computer Language Benchmarks Game
URLリンク(shootout.alioth.debian.org)
Javaは何だかんだで早いよなぁ。
やっぱり俺の本命はErlangじゃなくてScalaだ。
次世代ゲーム機もScalaWithJavaAPIでいいと思う。
471:デフォルトの名無しさん
08/09/13 17:23:11
>>988
古い規格だと、ISO 9899:1990 セクション 3.4 で "byte" が定義されている。
同 セクション6.3.3.4 に The sizeof operator yields the size (in bytes) of its operand.
とある。
sizeof(char)は1で単位はバイト。
終了。
472:デフォルトの名無しさん
08/09/13 17:25:46
>>988
古い規格だと、ISO 9899:1990 セクション 3.4 で "byte" が定義されている。
同 セクション6.3.3.4 に The sizeof operator yields the size (in bytes) of its operand.
とある。
sizeof(char)は1で単位はバイト。
終了。
473:デフォルトの名無しさん
08/09/13 17:26:50
誤爆しかも連投ごめんなさい。
474:デフォルトの名無しさん
08/10/03 21:43:26
C99なんてもう誰も知らんぞ・・・
475:デフォルトの名無しさん
08/10/03 22:22:20
今度こそProgramming in Scalaって出版されましたか?
476:デフォルトの名無しさん
08/10/05 01:00:30
いいえ
477:デフォルトの名無しさん
08/10/05 14:34:55
10月30日以降にまた延期でっす!!
478:デフォルトの名無しさん
08/10/05 19:18:20
またかよ!
完成してから発売日発表しろよ!!
479:デフォルトの名無しさん
08/10/05 19:24:51
>>478
商売の基本は、発売前にマーケティング開始することだからなあ・・・
売れないのがわかったら出ないもんだし
ぁゃしぃebookだってそうだろ?
最初にまず、市場調査→セールス文を書く→マーケティングをしかける→商品作る→売れそうなら発売
が基本ってしってた?
480:デフォルトの名無しさん
08/10/05 19:25:23
> 商売の基本は、発売前にマーケティング開始することだからなあ・・
商売の基本は、商品完成前、発売前にマーケティング開始することだからなあ・・
481:デフォルトの名無しさん
08/10/06 00:30:08
執筆はどの時点で終わってるの?
482:デフォルトの名無しさん
08/10/11 01:14:30
ScalaByExampleのサンプルで動かなかったので質問
9.3章の最後
val intSort = msort((x: Int, y: Int) => x < y)
val reverseSort = msort((x: Int, y: Int) => x > y)
最後に'_'がない
10.3章
for { i <range(1, n)
j <range(1, i)
if isPrime(i+j)
} yield {i, j}
List.range()になってない
最後が(i,j)じゃない
これってサンプルのミスってことでいいの?
483:デフォルトの名無しさん
08/10/11 19:31:52
昔のバージョンではメソッドから関数への変換は _ つけてなかったし、タプルリテラルも中括弧だった(不評のためすぐに小括弧になった)。rangeは覚えてないけどそうだったんだろうね。
484:デフォルトの名無しさん
08/10/11 19:42:07
rangeは単にミスか省略か前提があるのかも。
485:デフォルトの名無しさん
08/10/11 22:59:16
ただのミスでしょう。ScalaLanguageSpecificationやScalaByExampleには新版ではエラーに
なる旧版のままの例のほかにもひと目でわかるタイプミスもときどきあります
486:デフォルトの名無しさん
08/10/12 00:07:59
解答サンクス
仕様変更にリファレンスが追いついてない状態なのね
本の出版が遅れるのも納得だわ
487:デフォルトの名無しさん
08/10/12 12:48:50
見つけたScala Language SpecificationやScala By Exampleのミスは、
MLで報告してあげると良いかも。英語で質問するのは敷居高いと思うかも
しれんが、適当な英語でもそれなりに意味を汲み取ってくれるので、大丈夫
488:デフォルトの名無しさん
08/10/13 22:26:54
2.7.2 RC3でた
489:デフォルトの名無しさん
08/10/18 12:49:41
URLリンク(pragprog.com)
490:デフォルトの名無しさん
08/10/18 13:20:09
>>489
> March 30, 2009.
orz
491:デフォルトの名無しさん
08/10/18 13:53:15
あー489はOdersky本とは別ですよ。タイトル同じだけど。
これも別ね。
URLリンク(blog.aspectprogramming.com)
492:デフォルトの名無しさん
08/10/19 00:22:05
タイトル、微妙に違うくね?
493:デフォルトの名無しさん
08/10/22 07:54:12
Programming in Scala is at the Printer
URLリンク(www.nabble.com)
> most likely we'll be shipping printed copies to all those who bought them the second and third week of November.
まだ先かー。
494:デフォルトの名無しさん
08/10/23 10:03:02
今日は、Scala勉強会@東北の日。東北と言っても、開催するのはネット上。夜の8時から。
495:デフォルトの名無しさん
08/10/24 20:23:54
エロい人ならScalaでグラフ構造ってどうつくるんだろう?
自分でつくると、JAVAで作ったのと変わらない物ができてしまう・・・
caseクラスとか駆使して、もっと、かっちょよく作れないもんかな。
496:デフォルトの名無しさん
08/10/24 22:16:36
そんなメタな構造なら、どんな言語で作っても基本は同じになるんじゃない?
それにメタであるだけに、応用によって実装のしかたは変わるし。
「アルゴリズムがJavaならオブジェクト指向に!」みたいな違和感がある。
497:デフォルトの名無しさん
08/10/25 07:07:55
Scalaって下がJavaだから仕方ないんだろうけど、
他の関数型言語だと構文で解決するようなものを
動的な仕組で無理矢理そう見せてる部分が筋がよくなくてどうにも気持ち悪い。
498:デフォルトの名無しさん
08/10/25 12:34:48
tatoeba?
499:デフォルトの名無しさん
08/10/25 15:26:47
>>497
んなこたあ無いと思うが、具体例は?
500:デフォルトの名無しさん
08/10/25 16:42:48
>>497
え?動的な仕組で無理やり解決?それってむしろ他の関数型言語でしょ。
Scalaは静的な仕組みで無理やり解決だよ。
501:デフォルトの名無しさん
08/10/25 16:49:35
リストの構築子も :: なんてそれっぽいものを用意してはあっても
所詮はメソッドのお化粧なのでパタンに書けないとか。
パタンマッチするのにケースクラスなんてものを導入せざるを得なかったのが
そもそもそうだと思うし。
502:デフォルトの名無しさん
08/10/25 17:29:45
ポイントがよくわからんので具体的なコードで他言語と比較してほしいなあ。
503:デフォルトの名無しさん
08/10/25 18:01:52
>>501
なんとなくわかった。
ちょっと違うが、JavaのGenericsのような無理や不自由さがあるということか。
504:デフォルトの名無しさん
08/10/25 18:04:49
余計わかんねー。Javaのジェネリクスって動的な仕組みなの?
505:デフォルトの名無しさん
08/10/25 18:10:26
>>501
えーと、::はListクラスのメソッドであり、かつcase classだからパタンに書けるんだが…
それはともかく、ケースクラスを導入せざるを得なかったってのは違うと思うな
パターンマッチングという機能をプリミティブで拡張性の無いものでなく、ユーザが
後付けでパタンを定義できて拡張性のあるものにするためにどうすればいいのか
という問題に対する解の一つがケースクラスなりExtractorであるってことだと思う
MLとかのパターンマッチに関する有名な問題の一つとして、抽象データ型に
対してパターンマッチできん、というのがあるけど、Scalaではこの点はそもそも
問題にすらならない
506:デフォルトの名無しさん
08/10/25 22:00:06
>>504
仕組みや目的はまったく違うけど、VMの仕様が言語に影響して無理があって不自由なところが一緒かと
507:デフォルトの名無しさん
08/10/26 11:17:41
JVM 上の Scheme とか普通にあるし、VM の仕様より、既存の Java ライブラリとの親和性を
重視してるかどうか、の違いでわ?
508:デフォルトの名無しさん
08/10/26 19:05:01
なんつーか、JVMの仕様からくる言語使用上の制約は実際あって思いつくけれども、
最初に動的とか非関数型的とかって書いたのはテキトーでしょ?
いずれにせよもうちょっと具体的に語ってくれればその通りだねとかいやそれは違うとかいえるんだけどさ。
509:デフォルトの名無しさん
08/10/26 23:59:56
>> 507
動的な型の言語と比較するのはあまり意味がないと思われる。
510:デフォルトの名無しさん
08/10/27 00:37:34
>>506
Javaからも呼び出せるように class としてバイナリを作成するがために、言語仕様に制約が出ているんじゃないかってことと考えて良い?
511:デフォルトの名無しさん
08/10/27 09:19:20
>>501
そりゃ構文の話で、動的とか静的とか関係ないだろ。
512:デフォルトの名無しさん
08/10/27 09:27:01
>>505
case classを使ったパターンマッチを、
クラス上のデザインパターンにするって主旨の設計だからねえ。
データ構造に依る分岐構造を、
データ構造上のcase classにまとめて整理しようって考え。
Scalaは型大好きだから。
パターンマッチ作法が強制されるけど、
整理の仕方としては面白いわね。
513:デフォルトの名無しさん
08/10/27 11:52:41
オカマっぽい
514:デフォルトの名無しさん
08/10/28 20:20:27
>>513
すまん。女です。
515:デフォルトの名無しさん
08/10/29 10:13:26
ワロタ
516:デフォルトの名無しさん
08/10/30 02:43:53
2.7.2 RC4でた
517:デフォルトの名無しさん
08/11/02 01:52:02
RC5でた
518:デフォルトの名無しさん
08/11/02 10:54:35
RC6でた
519:デフォルトの名無しさん
08/11/02 21:36:53
RC7でた
520:デフォルトの名無しさん
08/11/02 23:10:55
いや、マジで 今 RC6
521:デフォルトの名無しさん
08/11/03 00:43:24
RC8来たよ
522:デフォルトの名無しさん
08/11/03 01:14:09
マジかと思って見てみたらRC9が出てるし
523:デフォルトの名無しさん
08/11/03 01:35:29
Programming in ScalaってAmazonとかで買えるようになるんですかね?
524:デフォルトの名無しさん
08/11/03 19:27:53
そうして RC365 まで毎日でるわけですね
525:デフォルトの名無しさん
08/11/03 21:02:39
>>524
そこまでRubyの真似をしなくていいよwww
526:デフォルトの名無しさん
08/11/04 01:01:21
>>525
Vimのまねだったらやだな。
527:デフォルトの名無しさん
08/11/04 10:30:07
D言語みたいに、0.99から0.100になるよりは期待感なくてよいじゃないの
528:デフォルトの名無しさん
08/11/05 11:49:46
scala・・・この言語イマイチだねえ
529:デフォルトの名無しさん
08/11/05 11:50:38
とにかく中途半端な印象しかない
530:デフォルトの名無しさん
08/11/05 16:26:21
とにかくイマイチ絶対に例を挙げない
531:デフォルトの名無しさん
08/11/05 17:36:06
あくまで実用本位で言語オタク受けは眼中にないからな
532:デフォルトの名無しさん
08/11/05 17:46:01
えっ!?
533:デフォルトの名無しさん
08/11/05 19:06:39
rubyの気持ち悪さ異常
534:デフォルトの名無しさん
08/11/05 22:11:20
ruby や groovy は、いいときはミラクルなまでにサクサク進むけど
バグるとプロでもさじを投げるぐらいデバッグが超絶困難なようだね
535:デフォルトの名無しさん
08/11/05 22:42:12
コミュニティの性格に似てるかもな。
好きなスタイルで気分良くモノを進めている時は非常に良い顔を見せるが、
好まないスタイルとの出会いや不機嫌に耐性が無く、そういう時は非常に排他的で非生産的になる。
536:デフォルトの名無しさん
08/11/07 23:54:23
>>534
普段、静的型付け言語とRubyつかっているけど、たまに頭のモード切替が不十分で
静的みたいに書いちゃって、なかなか気づかないバグ残したことがあるよ。
この前ハマったのは、クラスのプロパティをattr_accessorだかで定義して、
自クラス内でプロパティ名そのままでアクセスしようとして、上手くいってなくて、
1日悩んだ挙句、self.プロパティ名、でアクセスしないといけないことに気づいたことかなw
アホか俺は、と思ったけどw
537:デフォルトの名無しさん
08/11/08 00:07:25
スレ違い
538:デフォルトの名無しさん
08/11/08 10:22:16
Actor の link って何に使うのか良くわからん・・・・
539:デフォルトの名無しさん
08/11/08 12:25:48
別のアクターが終了したのを検知する(あるいは一緒に死ぬ)ため。
540:デフォルトの名無しさん
08/11/08 15:06:14
ありがとうー。
Exit メッセージが来るってことですね。
てっきり、複数のアクタをグループ化して、メッセージのマルチキャストみたいなことができるのかと勘違いした。
541:デフォルトの名無しさん
08/11/08 15:08:13
あぁ、そうか。プロセスと同じように考えればいいのか。
親プロセスが死んだら、子プロセスも死なすって考えればいいのか。
542:デフォルトの名無しさん
08/11/08 15:51:32
メッセージのマルチキャストは、仲介役のアクタを用意して、自前でやるってことか・・・
URLリンク(www.nabble.com)
543:デフォルトの名無しさん
08/11/10 12:20:05
Scala 2.7.2 final キタ!
544:デフォルトの名無しさん
08/11/10 21:13:27
次は final2 がリリースされるんですね、わかります。
545:デフォルトの名無しさん
08/11/15 08:39:33
Programming in Scalaって出版されましたか?
546:デフォルトの名無しさん
08/11/15 21:33:35
11月25日前後を刮目して待て!
547:デフォルトの名無しさん
08/11/15 22:09:54
刮目して待ちます!
548:デフォルトの名無しさん
08/11/19 00:11:34
Programming in Scala 出版age
549:デフォルトの名無しさん
08/11/19 12:03:23
紙の本はまだだな
550:デフォルトの名無しさん
08/11/20 22:06:48
紙のほうは日本で買えるんですか?
551:デフォルトの名無しさん
08/11/21 08:26:36
アマゾンで買えるようになんじゃね
552:デフォルトの名無しさん
08/11/25 11:07:31
下は公式サイト(確か・・)で取ったサンプルコードなんだが、
作成アクター数(nActors)が500くらいからエラー吐きまくり・・
2.7.1の頃は、nActors = 1000でもちゃんと動いたんだが、
なんか知ってるエロい人いない?
import scala.actors._
import scala.actors.Actor._
object Message {
def main(args: Array[String]) {
val n = try {
Integer.parseInt(args(1))
} catch {
case _ =>
println("Usage: examples.actors.Message <n-actors> <n-times>")
Predef.exit }
val nActors = 1000
val finalSum = n * nActors
Scheduler.impl = new SingleThreadedScheduler
553:デフォルトの名無しさん
08/11/25 11:08:50
// 続き1
def beh(next: Actor, sum: Int) {
react {
case value: Int =>
val j = value + 1; val nsum = sum + j
if (next == null && nsum >= finalSum) {
//println(sender)
println(nsum)
System.exit(0)
} else {
if (next != null) next ! j
//println(sender)
beh(next, nsum) }}}
554:デフォルトの名無しさん
08/11/25 11:13:52
// 続き2
def actorChain(i: Int, a: Actor): Actor =
if (i > 0) actorChain(i-1, actor(beh(a, 0))) else a
val firstActor = actorChain(nActors, null)
var i = n
while (i > 0) {
firstActor ! 0
//if (i % 100 == 0) println(i)
i -= 1 }}}
555:デフォルトの名無しさん
08/11/25 11:20:20
nActors >= 473 で
以下を延々吐くみたい
at Message$$anonfun$beh$1$1.apply(message.scala:34)
at Message$$anonfun$beh$1$1.apply(message.scala:25)
at scala.actors.Reaction.run(Reaction.scala:78)
at scala.actors.SingleThreadedScheduler.execute(Scheduler.scala:174)
at scala.actors.Scheduler$.execute(Scheduler.scala:80)
at scala.actors.Actor$class.send(Actor.scala:411)
at scala.actors.Actor$$anon$1.send(Actor.scala:93)
at scala.actors.Actor$class.$bang(Actor.scala:583)
at scala.actors.Actor$$anon$1.$bang(Actor.scala:93)
556:デフォルトの名無しさん
08/11/25 17:50:27
StackOverflow が出てるんだけど、-Xmsをいくら増やしても改善しない。これはバグかもわからんね・・・
557:デフォルトの名無しさん
08/11/25 18:51:51
Programing in Scala v6(PDFと紙で買える奴な)
で、p73に
val greetStrings = new Array[String](3)
って言うコードがあるんだけどさ
2.7.2 final でインタプリタモード立ち上げて打ったら
scala> val greetStrings = new Array[String](3)
java.lang.NullPointerException
at scala.runtime.BoxedArray._deepToString$1(BoxedArray.scala:134)
at scala.runtime.BoxedArray.deepMkString(BoxedArray.scala:139)
at scala.runtime.BoxedArray.deepToString(BoxedArray.scala:127)
at scala.runtime.ScalaRunTime$.stringOf(ScalaRunTime.scala:163)
at RequestResult$.<init>(<console>:4)
at RequestResult$.<clinit>(<console>)
at RequestResult$...
だってさ \(^o^)/
2.7.1は全く問題なし \(^o^)/
とってもBuggyです本当ny
558:デフォルトの名無しさん
08/11/25 20:01:50
何気にインタプリタでArrayを内容表示する方式が変わったんだな。
昔は [L 方式で、新しいのは中身も表示してあげようとして要素のtoString呼んじゃってるようだ。
ArrayのtoString自体には問題ないようなのでインタプリタ固有の表示ルーチン持ってるんかな。
559:デフォルトの名無しさん
08/11/25 21:14:09
昔は単純にオブジェクトのtoStringを呼んでたんだけど、
新し目の版ではScalaRuntime#stringOfってメソッドを追加してそっちを使っているようだ。
stringOfはval a = null みたいなのについて例外を出さなくしてくれるのだが、
ArrayについてはtoStringじゃなくdeepToStringを呼ぶようにしていて、
このdeepToStringは要素のnullには(たぶん昔から)対応していないんだな。
560:デフォルトの名無しさん
08/11/25 21:33:26
val greetStrings = Array.make[String](3, "")
でとりあえず回避可
561:デフォルトの名無しさん
08/11/25 22:57:29
>>556
-Xss でかくするとか
562:556
08/11/25 23:29:14
>561
スマソ、556は-Xssのtypoでした。
Xmx,Xssとも増やしてもだめだった。><
ちょっとソース眺めてみたが、Actorまわりは結構手が入っている模様。
(スケジューラはインターフェースも変わっている)
もしかしたら、SingleThreadedSchedulerはそれらに対応できていないのかもしれない。
URLリンク(lampsvn.epfl.ch)
ちなみに、上記のソースも
Scheduler.impl = new SingleThreadedScheduler
をしなければ、動くはず。
563:561
08/11/26 12:57:09
java -Xss64M -cp scala-library.jarのパス:. Message 1000 1000
こちらではこれで動きますた
564:561
08/11/26 13:16:35
ちなみに
Scheduler.impl = new SingleThreadedScheduler
をしてる方
あと、デフォらしい -Xss512K では StackOverFlow しましたが
-Xss1024K なら大丈夫でした
565:556
08/11/26 13:43:32
>563
むむっ・・・本当ですね・・・
当方、環境変数JAVA_OPTSで設定していたつもりが、
なにか間違っていて設定が効いてなかったみたいです。orz
結局、単純に2.7.2でスタックの消費量が増えてたってことっすね・・・
566:デフォルトの名無しさん
08/11/27 23:58:25
>>551
本当にアマゾンで買えるのかなあ?
いまだに上がってない・・・
3月発売予定の達人のほうは上がっているのに・・・
567:デフォルトの名無しさん
08/11/28 00:55:36
まだみたいだね
URLリンク(www.amazon.com)
568:デフォルトの名無しさん
08/12/01 10:45:13
買えるようになったな
569:デフォルトの名無しさん
08/12/08 07:09:25
今日、やっと pattern matching の凄さを、下にある OCaml の 加減乗除算式を変形する
コード例で理解できました。
URLリンク(www.ocaml-tutorial.org)
pattern matching だけならば python でも近いことが実装できそうな気がしますが、「
Warning: this pattern-matching is not exhaustive.」と警告を出すことは不可能とし
か思えません。
でも OCaml ではライブラリの蓄積に限りがあります。本格的に OCaml をやるのは躊躇わ
れます。Scala の pattern matching でも OCaml と同等の「this pattern-matching
is not exhaustive.」警告を出してくれるのならば OCaml ではなく Scala に挑戦してみ
たいと思います。
Scala の pattern matching でも 「this pattern-matching is not exhaustive.」警告
を出してくれるのでしょうか? 少し google しても、下のようなことも書かれています。
URLリンク(lampsvn.epfl.ch)
Scala の 「pattern-matching is not exhaustive.」警告について教えてくださいませ。
570:デフォルトの名無しさん
08/12/08 09:07:06
>>21を読めばいい
571:デフォルトの名無しさん
08/12/08 13:01:16
>>570 >>21を読めばいい
御指摘、ありがとうございます。
若干のバギーな面があるにしても OCaml に近い pattern matching 処理を scala でも書
けそうですね。
Scala に喰らい尽きたくて涎が出ています。ただ、scala に移ってくる programmer の割
合が心配です。Java programmer の殆どは scala には移ってこないだろうと思っていま
す。Python から scala に来る programmer の方が多そうに思えます。
572:デフォルトの名無しさん
08/12/08 22:57:13
>>571
誰がどこから移ってくるとかどうでもいい
573:デフォルトの名無しさん
08/12/09 09:15:41
どうでもいいと思ってるなら書かなきゃいいのに。
いちいち自分の興味ない話題に「どうでもいい」なんてレスしてたらキリないぞ。
574:デフォルトの名無しさん
08/12/09 09:44:20
「どうでもいい」厨にレスしなくていいよ。
どこにでもいるから。
専用ブラウザのあぼーんに設定しておけばそれで済む話
575:デフォルトの名無しさん
08/12/09 17:12:50
自意識が分相応なところに落ち着く前の年齢なんでしょ。
「この俺が、他ならぬこの俺が、どうでもいいと思った!
この話題自体はどうでもいいことだが、この俺がどうでもいいと思ったことは
なんとしても書き込まれねばならない重大ニュースだ!」
576:デフォルトの名無しさん
08/12/09 17:15:20
なんて中身の無いスレだ
577:デフォルトの名無しさん
08/12/09 21:27:15
Scalaでスカラ
578:デフォルトの名無しさん
08/12/10 00:15:14
珍しく書き込みが続いたと思ったらこれかよ
579:デフォルトの名無しさん
08/12/10 01:05:02
3っつもレスがつくなんて>>572も書き込んだかいがあったな
580:デフォルトの名無しさん
08/12/11 08:47:42
>>569 です。scala へ飛び込むための背中押しをお願いします。また Java は殆ど使って
いないので誤解があったら指摘してやってください。
Java の generics は C++ generics/python duck typing とは別物だと思います。実質
的には、collection に対する cast を省略するために導入された構文だと極論しても許
されると思います。
本来の generics programming は、method 構造の共用を利用したプログラムの共用だと
思います。例えば __add__ method と __len__ method が共用されている全てのインスタ
ンスについて、下のような平均ルーチンを共用できることが generics programming だと
思います
T mean(listOfT):
T tAt = 0
for elm in listOfT: # sum up loop
tAt = elm.__add__(tAt)
return tAt/len(listOfT)
この意味で C++ template と python duck typing は似ています。必要があれば boost
library をpython に移植できます。一方で boost library を Java に移植するなんて無
理だと思います。
------------------------------
ここで質問です。 scala の generics は Java と同じ/別物どちらでしょうか。
boost library などの C++ template program を scala に移植することは可能でしょう
か。
これが可能ならば scala に飛び込みます。よろしく教えてやってくださいませ。
581:デフォルトの名無しさん
08/12/11 09:49:16
Scalaやらないでいいよ。
582:デフォルトの名無しさん
08/12/11 11:30:04
>>580
書き方を見るに、C++ templateすらろくに理解してなさそうだけど
(boostをpythonに移植できるなんて簡単に言う辺りがそう。boostはC++
templateのメタプログラミング機能を利用した部分も多くあって、duck typing
があれば大丈夫程度の代物じゃないよ)
あえて言うと、ScalaのgenericsはJavaのgenericsのシステムがベースに
なっていて、かなり似てはいる。もちろん、Javaのgenericsには無い特徴も
多くあるけど。
583:デフォルトの名無しさん
08/12/11 13:33:44
>>569 です。ご意見ありがとうございます。
>書き方を見るに、C++ templateすらろくに理解してなさそうだけど
>(boostをpythonに移植できるなんて簡単に言う辺りがそう。boostはC++
>templateのメタプログラミング機能を利用した部分も多くあって、duck typing
>があれば大丈夫程度の代物じゃないよ)
同意します。boost は必要に迫られた範囲でしか追っていません。私の環境では、
boost に積極的に関わったら、周囲から浮き上がってしまうだけだからです。
「C++ のSTLを使ったプログラムを scala に移植できますでしょうか?」と話を狭めます。
STL を使っただけのプログラムなら、大部分は duck typing で対応させられます。でも
Java の generics では無理でしょう。
>もちろん、Javaのgenericsには無い特徴も多くあるけど
580 さんは、私よりずっと知っていそうです。できたら「Javaのgenericsには無い特徴」
で主要だと思われる数点をあげてもらえますでしょうか。
584:582
08/12/11 19:16:55
>>583
>>582では、筆が滑って偉そうな書き方になってしまった。申し訳無い。
>「C++ のSTLを使ったプログラムを scala に移植できますでしょうか?」と話を狭めます。
>STL を使っただけのプログラムなら、大部分は duck typing で対応させられます。でも
>Java の generics では無理でしょう。
現在のJavaの標準ライブラリだと苦しいと思いますが、JavaでもSTL風のライブラリを
組めば近いことはできると思います(実際、STLを意識した設計のJavaコレクション
ライブラリがありました)。もちろん、STLの使われ方によっては難しい場合もあると
思いますが、一般的なケースでは十分可能ではないかと思います。
>580 さんは、私よりずっと知っていそうです。できたら「Javaのgenericsには無い特徴」
>で主要だと思われる数点をあげてもらえますでしょうか。
・genericsの共変/反変
詳しい説明は省きますが、Genericな型T[A]とT[B]があったときに、
A <: B(AがBのサブタイプである、と読む)ならばT[A] <: T[B]であるとき、
genericな型Tは共変である、といいます。その逆に、A <: BならばT[A] >: T[B]
であるとき、Tは反変である、といいます。具体例を出すと、ScalaのList型は
共変になっていて、List[Any]型の変数にList[String]やList[Int]を入れたり
することができます。このような機能はJava(やC++)にはありません(C++なら
templateを駆使した技巧によってあるいはできるかもしれないけど、素の
機能としては無いです)。
585:582
08/12/11 19:17:48
レスが長くなったので分割しました。
・structural type
いわば静的に型チェック可能なダックタイピングのようなもので、
例えば、
type A = { def hello: Unit }
とすると、A型は、Unitを返すhelloメソッドを持つ全ての型に適合するようになります。
この機能自体はgenericsに直接関係するわけじゃないですが、genericな型の
制約として、structural typeを使うことができるため、型パラメータTがhelloメソッド
を持っているべき、などの制約を表現することができます(いくつか実装上の
制約がありますが)。
・型パラメータのlower bound指定
Javaのgenericsでは、型パラメータTがある型のサブタイプであるべき、という制約は
表現できますが、Tがある型のスーパータイプであるべき、という制約は表現できません。
これは、上で書いた共変/反変の機能とセットで使うことで威力を発揮します。
他にもありますが、とりあえずこの辺で。
586:デフォルトの名無しさん
08/12/11 22:18:27
えー、Javaでも反変あるでしょ?
Scala特有なのはvariance annotationで自動的に共変なり反変なりになるところだと思う。
587:デフォルトの名無しさん
08/12/11 23:17:31
$ scala helloWorld.scala
/work/helloWorld.scala:1 error: not found: value println
println("hello, world!")
^
one error found
588:デフォルトの名無しさん
08/12/11 23:27:20
それからScalaのジェネリクスがC++とJavaのどちらと多くを共有しているかっていったら問答無用でJavaのほうだよ。
それでScalaやらないでC++やるっていうんだったら好きにすればいいと思う。
「C++にできてJavaにできない○○があるが、Scalaではどうか?」って聞いてくれればがんばって答えてみるかも。
589:582
08/12/11 23:38:37
>>586
ワイルドカードの下限境界の事言ってる?あれは「型を使う側」で明示的に指定しない
といけないという点で違うし、制限も強い。ワイルドカードに相当するのは、Scalaだと
Existential Typeだね。
590:デフォルトの名無しさん
08/12/11 23:42:16
いや、だから反変がJavaにはないっていうのは違うでしょ?
591:582
08/12/11 23:54:19
いや、A <: B => T[A] <: T[B]であるような、厳密な意味での反変はやはり無いと
言って良いと思う。Javaの場合、A <: B => T[A] <: T[? extends B]なわけだし。
ただまあ、誤解を招く書き方ではあったかもしれんとは思うけど。
592:582
08/12/11 23:58:46
すまん。共変と反変が逆になっとる。正しくは、以下。
いや、A <: B => T[B] <: T[A]であるような、厳密な意味での反変はやはり無いと
言って良いと思う。Javaの場合、A <: B => T[B] <: T[? super A]なわけだし。
ただまあ、誤解を招く書き方ではあったかもしれんとは思うけど。
593:デフォルトの名無しさん
08/12/12 08:35:32
>>569 です。582 さん、詳細に答えて下さり感謝します。
「Java の generics では、下のように extends を使う。デフォルトでは Object を継承
する」との説明を読んで、これは制限が強すぎると感じました。List, Vector, Map など
の素直なコレクション・ライブラリを記述するには型チェックが有効に働くでしょう。で
も使いもしないメソッドにまで型チェックが利いてしまうのでは、generic なライブラリ
を作るほうが大変だろうと推測していました。
public static <T extends Comparable<T>> boolean greater(T t1, T t2) {
return t1.compareTo(t2) > 0;
}
だからこそ、List(Any) と書けるようにしたのだと思います。
反変/共変は理解できていませんが、皆様の議論を見ていると scala では型チェックを
重視・活用しているように思えます。OCaml でのようにコンパイル段階でエラーを検出・
指摘することに拘っているのだろうと推測します。
Python duck typing のように、実行時にエラーを吐き出していたのでは、ビジネス用途
で使い物にならないのだと思います。C++ template でのように、大量の意味を掴みにく
いエラーメッセージを吐き出すことは、scala ではないのだと思います。
もうすこし調べてみます。ありがとうございました。
594:デフォルトの名無しさん
08/12/12 18:54:30
相対論スレかと思った
595:デフォルトの名無しさん
08/12/13 00:12:24
scalaを使うと並列処理がとても上手く書けると聞いた
そのメカニズムを教えてくれないか?
596:デフォルトの名無しさん
08/12/13 00:15:40
関数型だから??
597:デフォルトの名無しさん
08/12/13 00:19:00
つ URLリンク(www.scala-lang.org)
598:デフォルトの名無しさん
08/12/13 12:45:16
>>587
あえて print1n にしてエラーメッセージ出させるとうちの 2.7.2 final では
(fragment of HelloWorld.scala):1: error: not found: value print1n
print1n("Hello, world!")
^
one error found
!!!
discarding <script preamble>
となる
エラーメッセージ冒頭が違うのは何故?
599:デフォルトの名無しさん
08/12/13 15:09:29
なんか結局Java7にクロージャ入らないらしいので
結構本当にScalaの時代が到来するのではないか。
600:デフォルトの名無しさん
08/12/13 16:38:09
ないないw
エッジな人達はとっくに関数型に行ってるし
そうでない人にScalaは無理
下級兵士はこれからもJavaだよ
601:デフォルトの名無しさん
08/12/13 17:03:06
俺もScalaの時代が来るかについては否定的だけど
Javaな人に関数型の考え方を知ってもらう教材としてScalaは悪く無いと思う
適切なドキュメントさえあればScalaを学ぶのはそう難しいことではない
602:デフォルトの名無しさん
08/12/13 19:49:40
エッヂな人達って関数型に行ってもやっぱり実際に物作るのはC++とかスクリプトとかじゃないの?
603:デフォルトの名無しさん
08/12/13 20:37:13
エッチな人なので関数型言語でWEBクローラつくりました
604:デフォルトの名無しさん
08/12/13 22:32:32
>>599
RubyでいうRuby on Railsのようなキラーライブラリの爆発のようなもの必要だな
Liftはあるが、採用実績はまだこれからだ
Lift Web Framework: Home
URLリンク(demo.liftweb.net)
↓後はLiftのようなものを流行らせるなら、こういう記事がもっと増えて、
InfoQ: David Pollak氏 lift と Scala を語る
URLリンク(www.infoq.com)
さらにこういう本まで出版しないと
Amazon.co.jp: JavaからRubyへ ―マネージャのための実践移行ガイド: Bruce A. Tate, 角谷 信太郎: 本
URLリンク(www.amazon.co.jp)
URLリンク(images-jp.amazon.com)
おれ自身はRuby好きだけど、静的の魅力も知っているとScalaにすごく期待したくなるわけだよ
605:デフォルトの名無しさん
08/12/13 22:38:38
liftよりWeb Flavorに期待してる。あと、WicketはJavaよりScalaの方が書き易そうな気がするんだ。
606:デフォルトの名無しさん
08/12/13 22:46:11
昔はEJBが駄目すぎたけど今や
生産性なんて言語やフレームワークでそんなに違うかって思う
それより絶対性能の高さや簡単に数十台規模のシステムを開発できる
フレームワークでも作ってくれた方がありがたい
607:デフォルトの名無しさん
08/12/14 00:54:45
>>601
Javaな人に関数型を知ってもらうなら、Groovyでどうよ?
608:デフォルトの名無しさん
08/12/14 01:56:17
>>606
実際は大して違わないんですよ。
それよりも大事なのは
10分でブログが作れます、的なアトラクションや
コードが少なくてすみます、的な表向きな利点(実際はテストコードてんこもりで大して変わらん)
他に・・・
何がいると思いますか?
609:デフォルトの名無しさん
08/12/14 05:05:36
>>607
Groovyは関数型の要素が少な過ぎると思う。無名関数くらいじゃない?
しかも、そのくらいなら今どきの言語のほとんどが持っている機能だし
それにGroovyは関数型的な(immutableな)データ構造を作成するのを助けてくれないよね
Scalaは関数型的なデータ構造を作りやすい構文になってるので、その点でもScalaの
方が良いと思う
610:デフォルトの名無しさん
08/12/14 09:48:57
「関数型的なデータ構造」なんて曖昧な言葉は使わずに、
「代数的データ構造」と言いましょう。
611:デフォルトの名無しさん
08/12/14 11:17:44
>>610
代数的データ構造と言っちゃうとかなり範囲を限定しちゃうでしょ
immutableなデータ構造全般を指すつもりで関数型的なデータ構造と書いた
612:デフォルトの名無しさん
08/12/14 11:29:23
コンストくらいしかないような
613:デフォルトの名無しさん
08/12/14 23:07:17
>>598
Ubuntuでsynapticから入れたんですけど、
エラーになるんです。
$ scala -version
Scala code runner version unknown version -- (c) 2002-2006 LAMP/EPFL
こんなになるんです。
614:デフォルトの名無しさん
08/12/15 00:37:57
2.3.0 のようです
URLリンク(ubuntuforums.org)
ちなみに Debian の Etch も 2.3.0
Java 系はプラットフォームを汚すことはめったにないので、
Scala ホームサイトから直落としでも良いかと
Debian の Java は GNU 系に力を入れてるんで、 Sun 系の
方はまだまだです
615:デフォルトの名無しさん
08/12/15 20:28:40
>>614
アドバイスありがとうございます。
tar落としてきてやってみたらうまくいきました。
616:デフォルトの名無しさん
08/12/17 13:37:24
URLリンク(neopythonic.blogspot.com)
617:デフォルトの名無しさん
08/12/17 21:15:12
>>616
最初の学習曲線が厳しいようだ
私は Odersky の文章のまずさ (英語ネイティブでないのでしかたないのだが)
が最初にして最大の壁になるだろうな、と言語仕様を読んでて思ったが
618:デフォルトの名無しさん
08/12/17 23:58:38
>>617
俺は英語能力あまり無いのでOderskyの文章のどの辺がまずいのかあまり
よくわからんかったのだが、たとえば言語仕様のどの辺の文章?
619:デフォルトの名無しさん
08/12/18 20:26:02
どの辺というか、全体的に大ざっぱすぎたり専門的すぎたり、てか
書きぶりなどからして文章書いてる時間的余裕がなさげな感じ
明白なミスはほとんどないんだけど (616 紹介中の文章で can learning と
かあってわらたw)、肝心なところで何十回も読まないと何が言いたい
のか的を得なかったり、もっと簡単に言えるところを妙にまわりくどく
表現したり
まあさすがに数十回も読み直すうちに慣れましたが
(だから、例の本も当人が書くと知ってちょっと不安に思いますた、買う
予定ないけど)
620:デフォルトの名無しさん
08/12/18 22:55:36
私は、どうしてこういう機能や文法が必要なのか、
その説明が少ないんじゃないかなと思いました。
特に代数データタイプに通じてない人は
何が何やらさっぱり分からないんじゃないかと。
どうしてこういう形式を採用したのかが。