[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 01/12 16:01 / Filesize : 194 KB / Number-of Response : 792
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミング言語 Scala



1 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:40:17 ]
The Scala Programming Language
ttp://www.scala-lang.org/

チュートリアル日本語訳
ttp://homepage.mac.com/takashi_miyamoto/scala/ScalaTutorial.pdf
どう書く?org Scala
ttp://ja.doukaku.org/lang/scala/

666 名前:デフォルトの名無しさん [2008/12/28(日) 10:58:57 ]
XPathを完全に実装しようとおもったらノードの構造をZipperとかにしないといけなくなる。

667 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 20:52:47 ]
本家サイトで XML の鉄人の参加を募集してることからして、そっちの方は
まだ十分にカバーできてないっぽい感じ

668 名前:デフォルトの名無しさん [2008/12/28(日) 21:23:08 ]
>>666はよく考えたら違うな。
XPathをフル実装してかつ不変な構造にしたかったら、だな。
なんか関数型言語脳になってきたのかもしれん。

669 名前:デフォルトの名無しさん [2009/01/12(月) 12:58:59 ]
Scala 2.7.3 RC2 キタ!

670 名前:デフォルトの名無しさん [2009/01/14(水) 22:12:08 ]
2.7.3 finalキタ

671 名前:デフォルトの名無しさん [2009/01/21(水) 21:09:51 ]
なんかliftのMLでもmartin oderskyがXMLライブラリメンテナの勧誘活動してたけどそんなに深刻なんかいな。
ScalaチームでXMLの研究してた人1人しかいなかったの?

672 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:07:58 ]
XMLまわりは下手に言語仕様に組み込むより、XSLをDSLとして扱えるとかでよくね?
今の仕様がいけてるとは思えん。中途半端な独自仕様はかんべん。

673 名前:672 mailto:sage [2009/01/22(木) 00:10:30 ]
「言語仕様」と書いたのは誤解をうけそうだけど、そのへんニュアンスで。

674 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:18:43 ]
>>671
最近、YAMLやJSONに人が流れてませんかね。
下手すりゃXMLはSGML, ASN.1の後を追うことになっちゃう。
XHTML→HTML5って流れもあるし。



675 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:20:36 ]
無知乙。HTML5はXHTMLでもある

676 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 14:53:30 ]
XMLでないHTMLは4で打ち止めでXHTMLオンリーのはず(by w3c)だったのに、
WHATWGが立ち上がって、W3Cの方向性を変えたんだよ。
詳しくは↓あたりを読んでね。
www.html5.jp/trans/whatwg_html5faq.html#What_is_the_WHATWG.3F

well-formedでないHTML排除は延期された。永遠に延期かもしれない。

677 名前:デフォルトの名無しさん [2009/01/23(金) 20:46:11 ]
XMLって立ち上がりの時期はいけすかない感じだったけど
なんだかんだでスキーマとか数学的基礎とか処理効率とかについて
頭のいい人たちの研究が蓄積されてるんじゃないの?
それが流行でYAMLやJSONに置き換わるっていうとなんかもったいないなあ。

678 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:07:01 ]
XMLが苦もなく扱える人なら、Lispで事足りるんじゃないだろうか。

679 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:45:11 ]
>>676
そのドキュメントにもXHTMLシリアライゼーションのこと書いてあるだろ
HTML5でXHTMLが消える訳じゃない。XHTMLの未来もHTML5なんだよ
残念ながらXHTML2.0に希望はない

680 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:14:40 ]
span.xxsmall {font-size: xx-small; }
<span class="xxsmall">XHTMLの将来</span>

681 名前:デフォルトの名無しさん [2009/01/25(日) 22:28:26 ]
Programming Scalaってサブタイトルにマルチコア云々って書いてある割にページ数は少なそう

682 名前:  mailto:sage [2009/01/25(日) 22:42:31 ]
amazon.co.jpでProgramming in Scalaが注文できるようになってるね。
在庫切れになってるけどカートには入れられる。

683 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:24:22 ]
すから↑
スカ↑ラ(ドラクエ風)

アクセントはどこよ

684 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:40:34 ]
どうでも良いことだが、俺にとってのドラクエ風はス↑カ↓ラ↓



685 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:09:27 ]
ス↓カ↑ラ↑といえばラ・スカーラ。
まだ「ディスコ」と言われていた時代だ。

686 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:35:08 ]
Odersky 氏が「スケイラでも可」のようなことを言ってたビデオがあったから、
スカ↑ラの方かと

687 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:14:41 ]
スカラはイギリス的
スケイラはアメリカ的
スカイラはオーストラリア的

688 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2009/01/31(土) 21:24:08 ]
scアァは日本的

689 名前:  mailto:sage [2009/02/04(水) 10:00:11 ]
Scala初心者なんですけど
val a = List(1,2,3,4)

とした後

a.foreach( println( _ ) )
a.foreach( x => println( x + 3) )

はエラーにならないのに

a.foreach( println( _ + 3 ))

はエラーになります。どうしてですか?

690 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:01:34 ]
a.foreach( println( x => x + 3 ) ) 
と展開さえてエラーになってるみたいだね。
理由や原理は分からないけど。

691 名前:  mailto:sage [2009/02/04(水) 17:25:00 ]
expanded functionなんたらっていうエラーメッセージはそういう意味なんですか。
この略記法みたいのは、展開のしくみがよくわからないから複雑なのには自重しときますか。
ありがとうございました。

692 名前:  mailto:sage [2009/02/04(水) 17:40:31 ]
 _ を使った式ががprintlnに対して展開されてるってことですね。foreachではなく。
そう考えるとa.foreach(println(_))はよくforeachに対して展開されてますね。


693 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:19:14 ]
どう展開されるかはコンパイラの気分次第ってことか?

694 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:30:45 ]
println( _ + 3 ) は「+ 3」を解決するために _ を評価しなければならなくなる
からでわ?
println( _ ) だと println を評価するまで _ の評価を遅延できるのに対して



695 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:42:00 ]
_が予約語ってどうなの?
困らない?

696 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:51:03 ]
_ 単独で変数名とかクラス名にするやつがいるとは思えないんだが。

697 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:57:14 ]
_の正確な意味を知るにはScala言語仕様の6.23 Anonymous Functionの
Placeholder Syntaxを読むのが良いと思う。特に英語圏のブログでScala
やってる人が多用してる気がするけど、正確な意味を解説した記事ってないんだよな。

不正確だけどおおざっぱな説明としては、_を囲む最も内側の式が無名関数化される。
だから、println(_)だと、(x) => println(x)になるけど(_を囲む一番内側の式がprintln(_)
だから)、println(_ + 3)はprintln((x) => x + 3)になる(_を囲む一番内側の式が_ + 3だから)
あと、無名関数化される式はsyntactic category(文法定義上の非終端記号みたいなもの)が
Exprである必要がある。

基本的に、_がどう展開されるかは純粋に構文的に決まり、型とかは一切関係しない。

698 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:17:55 ]
println((_)) とかやると内側の括弧で阻害できるのか?

699 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:34:42 ]
>>698
試してみるとわかるけど、それはできない。
仕様書にはproperly containsという文言があるんだけど
単に式を囲む(_)は構文解析で_と同じになっちゃって、
(_) properly contains _とはみなされないということだと思う。

700 名前:  mailto:sage [2009/02/05(木) 00:11:19 ]
>>697
おお、わかりやすい説明ありがとう。
それでちっとまた実験してみた。

val a = List(1,2,3,4);

a.map( x => x)
はエラーにならないけど

a.map( _ )
はエラーになった。

この場合は
a.map( _ + 3)
にするとエラーにならない。
なるほど。

701 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:23:42 ]
酔っぱらっているので一つだけ。(>>697の括弧が構文解析できないレベル)
Scalaの_は、C++のboost/bind.hppの_1, _2, _3から来ているんだと思う。
>>697が解説してくれているけどそっくり。おやすみ

702 名前:  mailto:sage [2009/02/05(木) 00:32:11 ]
しかし算術式はなにかとくべつなのかな?

a.filter( 2 < 1 + _ )

はエラーにならない。
1 + _ が最も内側の式ではなく 2 < 1 + _を最も内側の式と見てくれる。

でも
a.filter( (2).<( 1 + _ )  )

だと1 + _ を最も内側の式と見てエラーになる。

2 < 3 は (2).<(3)と同じことだと読んだような気がするけど 、上の場合は挙動が違う。

703 名前:  mailto:sage [2009/02/05(木) 00:35:41 ]
あ、でも

a.filter( 2 < 1 + _ )
はエラーにならないけど

a.filter( 2 < (1 + _ ) )
はエラーになる。
この場合は ( 1 + _ )が最も内側の式とみなされるから。

704 名前:  mailto:sage [2009/02/05(木) 00:42:17 ]
明示的にかっこでくくちゃうと、そこでもっとも内側の式とみなされるけど
演算子の優先順位のためにかっこがいらなければセーフなのか。



705 名前:  mailto:sage [2009/02/05(木) 00:58:57 ]
ただし明示的な括弧といっても ( _ )は意味がないl。 _ とおなじ。
それ以外の場合は括弧の段階で一番内側の式とみなされる。

706 名前:697 mailto:sage [2009/02/05(木) 01:01:19 ]
>>701
>>702
その辺の挙動は、>>697で最後にさらっと書いたsyntactic categoryというのが絡んでくる。
>>697では最も内側の式という風に書いたけど、実はもうちょっと正確に言うと、もっとも内側で、
syntactic categoryがExprの式が無名関数化される。

まず、
a.filter(2 < 1 + _)
についてだが、1 + _の部分だけではInfixExprとみなされる。その外側の
2 < 1 + _も同じくInfixExprだが、メソッド呼び出しの引数の位置に来ることによって
Exprに昇格(適当にでっち上げた用語だが)し、結果として、2 < 1 + _が(x) => (2 < 1 + _)
のように無名関数化される。

a.filter( (2).<( 1 + _ )  )

については、1 + _は同様にInfixExprだが、メソッド呼び出し引数の括弧の位置に
現れたことによって、Exprに昇格してしまう。そのため、1 + _が無名関数化される。

a.filter( 2 < (1 + _ ) )

でも、やはり1 + _はInfixExprだが、式をグルーピングする括弧があることによって、
Exprに昇格してしまう。そのため、1 + _が無名関数化される。

707 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:01:43 ]
_はどのくらい強いの?
括弧以外は突き抜けられるぐらい強いの?

708 名前:697 mailto:sage [2009/02/05(木) 01:04:40 ]
>>707
基本的にはメソッド呼び出しの引数の括弧 or 式のグルーピングの括弧が区切りになっているという
認識で良いと思う。あとは、使っているとなんとなくわかるようになってくる感じ。上では言語仕様の
記述を元に挙動を説明したけど、そこまで知っていなくてもまあだいじょうぶだと思う。

709 名前:  mailto:sage [2009/02/05(木) 01:11:54 ]
>>706
697さん、詳しくわかりやすくどうもありがとう!
すっきりして寝れます。

710 名前:  mailto:sage [2009/02/05(木) 12:18:40 ]
amazon.co.jpの洋書でScala本、ただいま在庫切れだけど注文できるようになってて人気がすごいぞ。

www.amazon.co.jp/Programming-Scala-Comprehensive-Step-step/dp/0981531601/ref=sr_1_2?ie=UTF8&s=english-books&qid=1233803774&sr=1-2

Amazon.co.jp ランキング: 洋書 - 455位 (洋書のベストセラーを見る)
各カテゴリー内でのランキング:

1位 ─ 洋書 > Computers & Internet > Programming > Java
2位 ─ 洋書 > Computers & Internet > Programming > Software Design, Testing & Engineering > Object-Oriented Design
2位 ─ 洋書 > Computers & Internet > Programming > Languages & Tools

すげー!

711 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 12:33:07 ]
>>710
米国での期待の大きさが現れてる。同時に、
Haskellの棺桶の釘を打つ音でもある。

712 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:54:30 ]
そういう二者選択は馬鹿げてると思うよ。

713 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:58:15 ]
>>712
あくまで、米国のソフトウェア界のはなし。

714 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:55:08 ]
> 米国のソフトウェア界







715 名前:デフォルトの名無しさん [2009/02/05(木) 23:21:10 ]
>>712
洋書を買うのは物好きだけだろjk

現在のランク:
6位 ─ 洋書 > Computers & Internet > Programming > Software Design, Testing & Engineering > Object-Oriented Design
8位 ─ 洋書 > Computers & Internet > Programming > Java
28位 ─ 洋書 > Computers & Internet > Programming > Languages & Tools

716 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 06:46:27 ]
日本での順位に米国の話をレスとしたのがまちがい。>>711は撤回します。

717 名前:  mailto:sage [2009/02/07(土) 15:09:56 ]
ScalaにJavaみたいなenumないのですか?

Enumerationってのがあるみたいなのですが

object Main extends Application {

   object WeekDays extends Enumeration {
    val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
  }

  def isWorkingDay(d: WeekDays.Value) =
     ! (d == WeekDays.Sat || d == WeekDays.Sun)

   WeekDays filter (isWorkingDay) foreach { d => Console.println(d) }
}



printlnでの出力もMain$WeekDays(4)という形式です。
JavaのenumだったらFriとかよみやすい値です。メンバを加えたりもできました。

Javaのenum使えないのですか?

718 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:51:00 ]
多少コード量が増えるけど、

blogtrader.net/page/dcaoyuan/entry/erlang_plugin_for_netbeans_in
を参考にして、Weekdaysにメンバを追加するか、

abstract sealed class Weekdays
object Weekdays {
case object Mon extends Weekdays
case object Tue extends Weekdays
case object Wed extends Weekdays
case object Thu extends Weekdays
case object Fri extends Weekdays
case object Sat extends Weekdays
case object Sun extends Weekdays
}
val x: Weekdays = Weekdays.Mon
println(x) //Mon
のようにして、case objectを使う手段がある。

719 名前:  mailto:sage [2009/02/07(土) 16:05:59 ]
>>718

ブログのよりあなたのやり方のほうがJavaのenumっぽいですよね。
実質、個々のenum値が独自クラスのシングルトンになってるあたり。
でもJavaの場合はコンパイラが自動的にやってくれるので短く書けるけどScalaだとちょっと面倒ですね。
使いようによってはcase classのぶん便利なこともあるのかな。
ちょっと気になって質問したので、具体的にどう使うか目的があって質問したわけじゃないけど。

詳しくどうもありがとうございました。

720 名前:デフォルトの名無しさん [2009/02/07(土) 22:16:19 ]
enumにメソッド追加ってかなりJava独自じゃないですか?
必要ない気がするんですけどJavaラーは活用してるんですかね。

721 名前:  mailto:sage [2009/02/08(日) 20:04:19 ]
2版のEffective Javaに活用した例があっておもしらかった記憶があるけど
自分自身はつかったことない。

722 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:10:21 ]
enumのメソッド追加は便利。
ステートパターンが書きやすい。

723 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:45:31 ]
メモリ効率を重視する必要がある時に使ってる。
自分でナンバリングして整数型で扱うよりずっと型は強い。


724 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:51:01 ]
Scalaって実際どんな時に使うもんなんでしょ。
Javaだとサーバーサイドでしか使えないイメージがあるけど・・・
みんな基幹とか、webサービスのサーバー側に使ってたりするのかな?
webフレームワークはleftくらいしか見かけないけど



725 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 00:04:57 ]
>>724
先入観で凝り固まりたいように見える


726 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 00:47:57 ]
>>725
うーん、実際の話をしているんですが、どうなんでしょうか?

727 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 00:52:19 ]
>>724
> Javaだとサーバーサイドでしか使えないイメージがあるけど・・・

こういう人に答えても仕方ないしね。

728 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 01:44:45 ]
煽りを聞きたいのではないのですが・・・

729 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 02:12:43 ]
そもそもScalaがJavaで書かれているのに、
サーバーサイドしか使えないってw

730 名前:デフォルトの名無しさん [2009/02/10(火) 01:12:49 ]
>>724

スレの上の方でも議論があるけど、π計算の延長上にある言語だから
SOAとかメチャ無茶やりやすいぞ。

デスクトップクライアントが作りたいならSwingでやればいい
SwingがPoorで嫌だと言うのであれば、3月まで待って、Qt4.5(LGPL)を使いなさん

731 名前:デフォルトの名無しさん [2009/02/10(火) 01:19:46 ]
>>729
>そもそもScalaがJavaで書かれているのに、
あんまりいい表現じゃないな・・・

732 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 02:38:38 ]
>>724
liftだろ

733 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 10:45:22 ]
というかソース見ればわかるけど、今のScalaはScalaで書かれてる。
1.XのときはJavaで書かれてたらしいけどね。

734 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 20:20:42 ]
Scala をコンパイルするための Scala をコンパイルするための・・・



735 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 09:02:15 ]
なに!ScalaはJVMで動作するのか!?
無駄スグルwww 一体何のために。。。

736 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 09:17:32 ]
無知すぎるwww

737 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 09:52:40 ]
JVMつながりと言えば、Clojureのスレがないな……。
まぁS式嫌いなのでどうでもいいが。

738 名前:724 mailto:sage [2009/02/11(水) 10:06:39 ]
ありがとうございます。
>>733 を見てうやむやが氷解しました。

Scalaを書くためのScala。
何か関数言語的な美しいひびきを感じます。
使う気がしてきました。


739 名前:デフォルトの名無しさん [2009/02/12(木) 02:57:16 ]
+ や * はメソッドだって聞いたけど、
2 + 3 * 4 は 14ってちゃんと評価してくれるんだね
メソッドチェーンになるから、20が戻ってくると思った

これって遅延評価のおかげ?
Scalaのソースをちゃんと読まないといけないんだろうけど

740 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 03:21:54 ]
+や*がメソッドだというのは間違ってないけど、中置式のメソッド呼び出しに
関しては、演算子の最初の1文字で優先順位が決まるというルールになってる。
このルールのおかげで、算術式に関しては直感的な動作をしてくれる。
Scala言語仕様6.12.3 Infix Operationsによると、優先順位は以下のようになってる。

letter < '|' < '^' < '&' < '<', '>' < '=', '!' < ':' < '+', '*' < '/', '%' < all other special characters

たとえば、

"HOGE" charAt 0 + 1

という式があった場合、charAtの最初の文字はletterなので、+よりも演算子としての優先順位は低い。
そのため、

"HOGE".charAt((0).+(1))

と解釈される。

741 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 03:22:54 ]
訂正。s/letter/all letters/

742 名前:740 mailto:sage [2009/02/12(木) 03:25:55 ]
ありゃりゃ。コピペして不等号加えるときにミスったorz
正しくは、以下。

all letters < '|' < '^' < '&' < '<', '>' < '=', '!' < ':' < '+', '-' < '*', '/', '%' < all other special characters

743 名前:739 [2009/02/13(金) 00:44:52 ]
>>740
サンクス

BigDecimalでも試したけど、ちゃんと掛け算・割り算を優先するってありがたいな
RemoteActorの動作がいまいちわからなかったり(コンパイルした後、scalaコマンドで動かないのに、javaコマンドからだったらちゃんと動くとか)
わからんことだらけなんだけど、しばらく弄ってみることにする

744 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 03:01:26 ]
RemoteActorっていったら、
メッセージ送った分だけヒープが貯まっていくのな・・

Asyncで(actor ! msg な)メッセージ送ると、反応しないことが多々ある
インタプリタで使う限りは問題ににならないけど、コンパイルした途端にダメ・・

ありえねぇ・・・(;´Д`)



745 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 18:03:54 ]
>>774
まさかとおもってやってみたら、思い切りOutOfMemoryしやがった(笑)

java.lang.OutOfMemoryError: Java heap space
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getDeclaredMethod(Unknown Source)
at java.io.ObjectStreamClass.getPrivateMethod(Unknown Source)
at java.io.ObjectStreamClass.access$1700(Unknown Source)
at java.io.ObjectStreamClass$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.<init>(Unknown Source)
at java.io.ObjectStreamClass.lookup(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

746 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 18:04:44 ]
(続き)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at scala.actors.remote.JavaSerializer.serialize(JavaSerializer.scala:37)
at scala.actors.remote.NetKernel.sendToNode(NetKernel.scala:32)
at scala.actors.remote.NetKernel.namedSend(NetKernel.scala:39)
at scala.actors.remote.NetKernel.forward(NetKernel.scala:71)
at scala.actors.remote.DelegateActor$$anonfun$act$1$$anonfun$apply$1.apply(Proxy.scala:168)
at scala.actors.remote.DelegateActor$$anonfun$act$1$$anonfun$apply$1.apply(Proxy.scala:125)
at scala.actors.Reaction.run(Reaction.scala:78)
at scala.actors.Scheduler$$anon$2.run(Scheduler.scala:77)
at scala.actors.FJTaskRunner.run(Unknown Source)

747 名前:775 mailto:sage [2009/02/14(土) 18:06:57 ]
>>744 ですた(苦笑)

うーん、こういう不具合が未だにActor周りがver 1.0 にならない理由なのかな
2.7.2ではメモリーリークの不具合があったっていうし

748 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:25:35 ]
初学者にやさしい100〜500行くらいで書けるようなお題くれ

749 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 11:33:01 ]
つ「正規表現マッチャ」
www.oreilly.co.jp/editors/archives/Btfl_Cd_01.pdf
www.oreilly.co.jp/editors/archives/000158.html


750 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 12:49:40 ]
>>748
% 問題・・9時台から16時台(17時閉店)までの勤務表を作れ。
%
% 勤務表は1時間単位とする。
% 要員はAya、Koh、Sho の3名である。
% 最小勤務単位は2時間であり、一時間だけの勤務は認められない。
% 一人勤務は1時間までであり、もし一人勤務に就いたときは
% 次の少なくとも1時間は勤務につけない。
% 以下の時間は、それぞれ用事があり、勤務できない
% Aya・・14時台、Koh・・11時台と14時台、Sho・・9時台と11時台。

751 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 03:21:25 ]
OreillyやAPressもScala本を出すみたいだね

oreilly.com/catalog/9780596157746/index.html#top
www.apress.com/book/view/9781430219897

Oreillyのほうは、Twitterの中の人が書いて
Apressのほうは、Liftの中の人が書いてるみたいです

752 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 00:15:33 ]
>>737
Clojureは人口が少ないからね。scalaよりは。スレを作ってもarcスレみたいになりそう。
ircとgoogle groupをみてると盛りあがってるんだがね。
ScalaとClojureはライバル関係みたいだがなぁ。

ところでScalaでどのくらいの人口なの?

753 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 00:57:02 ]
clojureやarcは「yet another my own Lisp」でしょ。
面白いところはあるけど、Scalaとは無縁。

754 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:08:45 ]
>>753
調べた上でそういってるなら正しいが



755 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:15:14 ]
仮に調べてなくても正しいものは正しい。


756 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:18:06 ]
>>755
それは率直にいうと頭が悪いな

757 名前:753 mailto:sage [2009/02/26(木) 01:28:37 ]
>>753が間違っていると思う人は根拠を言ってみれば?
Scalaは静的な言語ですが、clojureやarcはそうではありません。
clojureなんて動的馬鹿といっていいような仕様です。
型システムや関数/メソッド呼び出しも全然違います。
OCaml辺りの方がずっとずっと近いです。

clojureやarcはLisp SchemeスレかARCスレがあるし、
ココで語る意味のある言語とは思えん。

758 名前:デフォルトの名無しさん [2009/03/02(月) 00:03:43 ]
Lift 1.0が出たとか

759 名前:デフォルトの名無しさん [2009/03/02(月) 01:30:11 ]
>>758
出ましたね。
APIドキュメントとか、Lyxで書いたドキュメントはいまいち整っていませんが・・

760 名前:デフォルトの名無しさん [2009/03/02(月) 01:34:09 ]
Terracottaの中の人(Scala OTPの作者)が、QCon Londonで発表するスライドも
SlideShareにupされています 
ttp://www.slideshare.net/jboner/pragmatic-real-world-scala-45-min-presentation

761 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 17:12:16 ]
>>757
最近見かけたのは、 scala と clojureの共通点は java VM上の言語だってことだが
それだけじゃなくて、並列処理のことが念頭にあるみたいなのね。だからその並列処理
の考えかたの違いもあって、どっちが。。。みたいなことが話題として出てきてる。

だから、無縁だと考えるのは視点の違いから来てるね。悪いけど>>757は視野が狭いとしか
思えないね。言語の系統を語ってるだけなら無縁だからね。だから、言ってることはもっと
もなことを言ってるし、そこでライバル関係だとは誰も言わないだろう。

もっとも、たまたま、>>737で話題になって>>752で答えたにすぎないし、
対立を煽ったり、>>752>>757にあるように、他の言語をどこか馬鹿にするようなことも
言う気はないよ。

762 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 17:17:59 ]
>>761
>>752じゃなくて>>753だね。
おまけとして、
japan.internet.com/column/developer/20090224/26.html
でもみればいいよ。

763 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 20:26:57 ]
> あるみたいなのね
こういうの勘弁


764 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:00:48 ]
マギー司郎の声でよめば大丈夫だ



765 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:53:35 ]

ScalaはJava互換あるし、第一言語がJavaで、
Haskellもちょっとだけかじった俺なら余裕だろと思ったら、
Listのインスタンス化に2時間ハマったぞWWWWWWWW
ArrayListをnewしようとちょっとずつ構文変えて頑張ってた健気な俺涙目WWWWWWWWW

ていうか巷のブログ書いてるやつら、動くコード書いてくれよWWWW
断片だけじゃわからないからWWWWWWWWW
コンパイルする身にもなれってのWWWWWWWWWWWWWW


766 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 10:41:55 ]
マニュアル嫁

767 名前:デフォルトの名無しさん [2009/03/07(土) 11:25:33 ]
Haskellかじったらリストのインスタンス化思い当たるんじゃん

768 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 12:09:38 ]
>>765
ScalaByExample和訳
ttp://www29.atwiki.jp/tmiya/pages/23.html

769 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 18:28:12 ]
リストのインスタンス化で2時間悩むとか、プログラム初心者ならともかく、どうかしてるだろ
Scala Listでぐぐって出てくる最初のページにすら、やり方出てくるぞ。

770 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:07:59 ]
こういうのを書きたかったんだ
List<File> list = new ArrayList<File>();

で、ググってでてくるのかね?

771 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:28:23 ]
ああ、すまん。Javaの方のListを作りたかったわけね。それなら、Listでぐぐっても
出てこないわ(それだと、ScalaのListが出てくるし)。調べるべきは、Listの作り方じゃなくて、
ScalaでのGenericsの使い方の方だったね。Scala Genericsでぐぐれば、色々出てくる。

var list = new ArrayList[File]

772 名前:デフォルトの名無しさん [2009/03/08(日) 11:33:00 ]
コレクションは特別な理由がない限りScalaライブラリのを使ったほうがいいとおもうけどなあ。

773 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 16:32:46 ]
関数型言語について勉強中の者です。

関数型言語らしいプログラムの書き方ってどういうのを言うんでしょうか?
「リスト」を最初に作り、それに関数を適用して行くという形式で行くのが大事そうだ、というのは解りました。

ただ、これを読んでかえって解らなくなってしまいました。

刺激を求める技術者に捧げるScala講座---目次:ITpro
第7回 関数脳のつくり方 First Season
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20090224/325385/?ST=develop

これを書いている人はなんか理解したようなのですが、読んでもちっとも解りません。
特に
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20090224/325385/?ST=develop&P=6
>しかし,オブジェクトの技術を使わず,純粋に手続きで考えてみたのですが,頭がパニックになりそうでした。
>最初のNode(XMLタグ)を取得して,その子要素をとってループをまわす。
>その子要素がDirの場合は,childでさらにその子要素をとってループを回す。
>Fileの場合は中身のファイル名を表示する。Dirの子要素にまたDirが含まれていたら,さらにchildを適用して…。

このあたり。
手続きだって再帰すればすぐだと思うのですが。
手続きって言った場合、再帰は含まないのでしょうか?


774 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 17:09:12 ]
駄文読まずに>>8のチュートリアル翻訳版読めば?



775 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 20:05:13 ]
>>773
その文章、体裁はともかく内容としては
人に何かを説明することを目的として書かれたという感じがしない。
自分の頭を自分なりに整理してみただけの感想文という感じ。

776 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:23:46 ]
ScalaってJavaで作られた過去の遺産をそのまま使えるという点では素晴らしいけどさ
Scala使うなら関数型の技法を習得必要があるじゃん

だってScalaでJavaの書き方使うってんなら、Scala使う意味がないんだもん

大変残念だけど日本のほとんどのシステム開発の現場では採用されないだろうね
先鋭的な技術会社なら別だけど

777 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:25:52 ]
>>776
> Scala使うなら関数型の技法を習得必要があるじゃん

scalaを学べば十分

778 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:45:34 ]
だからScalaを習得するってことは関数型言語を習得するってことと同義だろ?

Scala使って関数型言語のメリットを利用しないってのは意味がない
Javaだけ使ってればいいんだから
学習コスト高すぎってことだ

779 名前:デフォルトの名無しさん [2009/03/27(金) 22:01:50 ]
リストを使うっていうよりは一般的に副作用を最小化する心がけを持つといいんじゃないかな。
そして副作用のないコレクションの代表選手がリストなのでリストはよくつかわれる。
その記事で何を手続き的として想定してるかはわかんないけど、同じ再帰を使うのでも、
たとえばツリー構造からある条件で抽出するときに、
「結果を格納する変更可能なコレクションを用意しておいて再帰しながらその入れ物に追加していく」だとかなり手続き的だけど、
「再帰呼び出ししながら戻り値であるリストの和集合をとっていく」だとちょっと関数的になる、みたいな。

780 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:02:30 ]
scalaって関数型にしては癖が強いと思うよ。それはjavaを使った人向けに作られた
関数型言語でもあるからだよ。

日本で採用されるかどうかってのは、海外で普及して権威付けされるかどうかでしょ。
右に習えしか出来ないんだからね。先陣を切ってやるような多少?のリスクを背負っ
て進めるようなところはないだろうから。まだ、ベンチャーが育つ土壌があるならば、
可能性はあると思うが、海外で普及したあとの2、3年まちってところではないかな。

並列プログラミングが重要さを増せば変わってくると思う。

学習コストは手続き型しか知らないような人にとってみれば未知への恐怖というコスト
が高いと思うが、基本的なところは然程難しくないと思うよ。この手の事で保守的な
ことを言って無理だと言う人って、一般的に融通が利かない人の傾向があるよ。そんな
人が多いんかなぁ。プログラマってひとたちは。。。

781 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:03:39 ]
javaプログラマ向けの関数型言語になってるから学習コストはさほど高くないと思うんだが。

782 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:06:29 ]
>>778
全然そうは思わない。ScalaはScala、関数型言語ではない。

783 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:13:56 ]
>>780
>>782
Scalaと関数型言語の特性については無知だったようですまねぇ

でもね、俺みたいな2次請け3次請けで働いてるプログラマってプログラマの多数派なわけじゃん
そんな多数派の「現場」ではRubyすら使われる気配がないし、ましてや関数型言語なんて採用されるわけがない
ってことを言いたかっただけなんだが

784 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:29:12 ]
>>783
ごめん。言いすぎた。
言うようになかなか採用されないと思ってるよ。



785 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:35:34 ]
Scalaは関数型言語ではなくて、
関数型言語の機能、特徴[も]兼ね備えている言語。
今では特に珍しいことではない。

www.scala-lang.org/node/25
Introducing Scala
> It smoothly integrates features of object-oriented and functional
languages

www.scala-lang.org/node/1305#Func
Learning Scala
> If you come to Scala with a functional programming background
> you will find most of the more advanced functional programming
style familiar.

www.scala-lang.org/node/959
Book "Programming Scala"
> "Programming Scala" will show you the fundamentals of functional programming using Scala.


786 名前:デフォルトの名無しさん [2009/03/27(金) 22:41:01 ]
ちょっと件のページのデータを踏襲した例を作ってみた。
まずこれは再帰を使ってるけど手続きっぽいでしょ。resultが順次更新されていくから。

import scala.xml._
import scala.collection.mutable._

val result = new ArrayBuffer[Node]
def find1(node: Node)(pred: Node => Boolean): Unit = {
if (pred(node)) result += node
for (child <- node.child) find1(child)(pred)
}
find1(xml) { case <file>{_*}</file> => true; case _ => false }

こうするとちょっと関数型っぽくなる。

def find2(node: Node)(pred: Node => Boolean): List[Node] = {
if (pred(node)) List(node)
else node.child.toList.map(find2(_)(pred)).flatten[Node]
}
val result = find2(xml) { case <file>{_*}</file> => true; case _ => false }

find2は便利メソッドのflatMapを使ってこう書いても同じ。

def find3(node: Node)(pred: Node => Boolean): List[Node] = {
if (pred(node)) List(node)
else node.child.toList.flatMap(find3(_)(pred))
}

787 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 22:50:18 ]
>>773
関数型言語の勉強なら「プログラミングの基礎」がいいよ。
www.amazon.co.jp/dp/4781911609/

788 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 23:01:52 ]
Scalaは関数型の要素抜きのGood Javaで使っても結構いい線いけてるから、
なかなか関数型まで行き着かないんだよね。
同じJavaVMで動くといってもJavaと食い合う言語だなと思ったよ。
確かに関数型だけを学びたいならHaskellやML系の言語を先にやったほうが手っ取り早いかもしれない。

789 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 23:10:13 ]
OCaml亜種のF#がC#や他の.NETグループの言語と組み合わせる前提の
設計になってるのと対比すると特徴的だな。

790 名前:デフォルトの名無しさん [2009/03/28(土) 09:22:03 ]
jp.techcrunch.com/archives/20090326get-ready-for-java-on-appengine/
コンパイルしたScalaもつかえそう。

791 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 09:40:47 ]
いや、当然APIが制限されてるって。
Python版がそうであるように。







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<194KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef