- 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/
- 607 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 00:54:45 ]
- >>601
Javaな人に関数型を知ってもらうなら、Groovyでどうよ?
- 608 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 01:56:17 ]
- >>606
実際は大して違わないんですよ。 それよりも大事なのは 10分でブログが作れます、的なアトラクションや コードが少なくてすみます、的な表向きな利点(実際はテストコードてんこもりで大して変わらん) 他に・・・ 何がいると思いますか?
- 609 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 05:05:36 ]
- >>607
Groovyは関数型の要素が少な過ぎると思う。無名関数くらいじゃない? しかも、そのくらいなら今どきの言語のほとんどが持っている機能だし それにGroovyは関数型的な(immutableな)データ構造を作成するのを助けてくれないよね Scalaは関数型的なデータ構造を作りやすい構文になってるので、その点でもScalaの 方が良いと思う
- 610 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 09:48:57 ]
- 「関数型的なデータ構造」なんて曖昧な言葉は使わずに、
「代数的データ構造」と言いましょう。
- 611 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 11:17:44 ]
- >>610
代数的データ構造と言っちゃうとかなり範囲を限定しちゃうでしょ immutableなデータ構造全般を指すつもりで関数型的なデータ構造と書いた
- 612 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 11:29:23 ]
- コンストくらいしかないような
- 613 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 23:07:17 ]
- >>598
Ubuntuでsynapticから入れたんですけど、 エラーになるんです。 $ scala -version Scala code runner version unknown version -- (c) 2002-2006 LAMP/EPFL こんなになるんです。
- 614 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 00:37:57 ]
- 2.3.0 のようです
ttp://ubuntuforums.org/showthread.php?t=662629 ちなみに Debian の Etch も 2.3.0 Java 系はプラットフォームを汚すことはめったにないので、 Scala ホームサイトから直落としでも良いかと Debian の Java は GNU 系に力を入れてるんで、 Sun 系の 方はまだまだです
- 615 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 20:28:40 ]
- >>614
アドバイスありがとうございます。 tar落としてきてやってみたらうまくいきました。
- 616 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 13:37:24 ]
- neopythonic.blogspot.com/2008/11/scala.html
- 617 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:15:12 ]
- >>616
最初の学習曲線が厳しいようだ 私は Odersky の文章のまずさ (英語ネイティブでないのでしかたないのだが) が最初にして最大の壁になるだろうな、と言語仕様を読んでて思ったが
- 618 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:58:38 ]
- >>617
俺は英語能力あまり無いのでOderskyの文章のどの辺がまずいのかあまり よくわからんかったのだが、たとえば言語仕様のどの辺の文章?
- 619 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:26:02 ]
- どの辺というか、全体的に大ざっぱすぎたり専門的すぎたり、てか
書きぶりなどからして文章書いてる時間的余裕がなさげな感じ 明白なミスはほとんどないんだけど (616 紹介中の文章で can learning と かあってわらたw)、肝心なところで何十回も読まないと何が言いたい のか的を得なかったり、もっと簡単に言えるところを妙にまわりくどく 表現したり まあさすがに数十回も読み直すうちに慣れましたが (だから、例の本も当人が書くと知ってちょっと不安に思いますた、買う 予定ないけど)
- 620 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:55:36 ]
- 私は、どうしてこういう機能や文法が必要なのか、
その説明が少ないんじゃないかなと思いました。 特に代数データタイプに通じてない人は 何が何やらさっぱり分からないんじゃないかと。 どうしてこういう形式を採用したのかが。
- 621 名前:デフォルトの名無しさん [2008/12/19(金) 07:48:40 ]
- 仕様書はどこでも大体そんなもんでしょう。By Exampleは読んだ?
- 622 名前:620 mailto:sage [2008/12/19(金) 11:19:41 ]
- www.scala-lang.org/node/143
も結構よんでいるから俺は全然問題ない。 ただこういうのを読まずに始めたい人、 代数データタイプの知識のない人、 そういう人への「解説」がない。
- 623 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 19:32:43 ]
- 英語に文句を言う前に
「的を得ない」という間違った日本語を使わないようにしようぜ。
- 624 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 20:04:29 ]
- scalaの公式サイトに雪が降ってるじゃないか!
- 625 名前:デフォルトの名無しさん [2008/12/19(金) 20:06:17 ]
- 凄い!!
- 626 名前:619 mailto:sage [2008/12/20(土) 12:41:14 ]
- >621
てか、英語日本語ともネット上で読めるものはすべて読みました、でも結局、 622 さんの言うように、OCaml、Haskell さらにジョイン計算理論まで目を通した 上で読み返してはじめて得心しました ちなみにそんな私の Scala 評価は、 増築しまくりな OCaml よりはすっきり 原理原則にこだわって常時遅延評価を意識する必要が (少なくとも使用初 期には) ある Haskell よりは気が楽 オブジェクト指向はジョイン計算の具現と知って納得 といった感じス
- 627 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 13:02:53 ]
- >>626
他の言語の仕様書(英語)は読んでみたことある? 俺はScalaの言語仕様の文章が特にわかりにくいとは感じなかったな。
- 628 名前:619 mailto:sage [2008/12/20(土) 13:05:01 ]
- >623
古来中国では「的を射ない」ことを「失鵠」とも表現していました (鵠 はこの場合的の 中心の黒丸のこと; 正鵠など) だから「失う = 得ない」で「漢字の用法」としては必ずしも間違っておらず、事実厳密 な議論では「どちらも可」となっているようです ただなるほど国語辞典などでは「的を射る」の方しか載ってないので、「普通の日本 語」としては「的を得ない」は非推奨、ということになるようです 実際には「的を得ない」の方がはるかに広く使われてるようですが
- 629 名前:619 mailto:sage [2008/12/20(土) 13:08:52 ]
- >>627
Java、ECMAScript と E4X をざっと ほかは Scheme や Haskell などは日本語訳でだけス てか、これらの文章が良すぎだったのかな?
- 630 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 13:34:20 ]
- >>629
PrologのISO規格書が面白いのではないか。スタックモデルで説明している。 BNFも併記されてたと思うけど。
- 631 名前:619 mailto:sage [2008/12/20(土) 13:44:50 ]
- Prolog は、MSX のころに 98 用 BASIC で記述されたミニマム Prolog を移植して
ちょっと遊んで以来 ちなみに自分初の処理系移植実装な経験 (懐 もしかして誤解されてるかもですが、別に言語仕様マニアではなく、Scala では チュートリアルでも ByExample でも「全体像」がさっぱり会得できなくてしかたな く言語仕様にトライするしかなかっただけなのでス
- 632 名前:デフォルトの名無しさん [2008/12/20(土) 14:58:39 ]
- まあ少しずつやっていきなよ。
- 633 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 15:34:12 ]
- >>628
漱石枕流乙
- 634 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 18:45:34 ]
- ジョイン計算理論って何よ
- 635 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:33:44 ]
- >>634
たぶんJoin-calculus en.wikipedia.org/wiki/Join-calculus のことだと思う。全然知らないけど、分散計算の形式的な計算モデルの一つらしい
- 636 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:57:19 ]
- >>634
ラムダ計算を並行性の観点から鍛え直したのがパイ計算 ttp://web.yl.is.s.u-tokyo.ac.jp/kobalab/kadai99/picalc.html で、それにさらに場所階層性を導入したのがジョイン計算 ttp://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070531 (すごい分かりやすい pdf があったけどパスワード封鎖されたようで、 現状で日本語での記事はこの程度しか見あたらず、2 項目の JoCaml の部分) ちなみに OCaml から JoCaml を作る過程で練り上げられた理論っぽい
- 637 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:38:54 ]
- なるほど
Scalaのどの辺がそれに基づいてるの
- 638 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 00:30:03 ]
- 「Scala開眼」を書いた人がこの中にいるな
- 639 名前:620 mailto:sage [2008/12/21(日) 00:58:28 ]
- >>637
Scala.Actorsとか。 こういうのは仕様書やライブラリのAPI見れば分かる話じゃないよ。 知っているのと知らないのでは理解の速度が全然違うし、 モデルの把握もしやすくなる。 >>626の言うようにScalaはいろいろといいところがあるんだけど、 解説文が少なくてあまり理解されてないと思う。 まあ>>622にある論文読めばいいんだけどw
- 640 名前:636 mailto:sage [2008/12/21(日) 11:12:25 ]
- Scala のオブジェクト指向導入は ML 系からのアバウトな逸脱ではなく、ジョイン
計算の場所階層性 (プロセスは「場所」に属し、チャネルはその場所階層を上 位へとさかのぼりつつ目的のプロセスを検索する) をクラス階層と解釈しての きちんとした理論を背景とするものである、ということ これで何がうれしいかというと、プログラムの実行時エラー皆無性が計算で事 前に証明可能になる、つまり静的型のエラー回避性が動的結合にも延長でき るようになる ということらしい
- 641 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:37:52 ]
- > つまり静的型のエラー回避性が動的結合にも延長できるようになる
面白そうですが、今の型システムで回避できなくて、join計算で回避できる ようなエラーってどういうもの?
- 642 名前:640 mailto:sage [2008/12/21(日) 20:19:02 ]
- 先の今は見れない pdf では純粋にプロセス間通信に限ればそこにおける
予期せぬエラーが理論上ゼロとなることを証明してました 、たしか むろん、ハードのエラーとかプロセス間通信以外に起因するエラーは回避 不能なはずですが ちなみに、パイ計算の方はたしか理論上どうしても無限回帰になってしま う場合があったはず (非理論的なメタ制約を与えれば回避できるようですが)
- 643 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 13:02:43 ]
- >>639
Actorとπは別もんだろー。
- 644 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 18:35:11 ]
- Scalaのpattern matchingは、
Join calculusとの関係が深いです。例えば、 ALGEBRAIC PATTERN MATCHING IN JOIN CALCULUS arxiv.org/pdf/0802.4018 そのpattern matchingを使えば、 多くの並列計算モデルが、 「ライブラリとして」実装できるというのが、 Scalaの核の一つです。 Scala.Actorsはその実装の一つで、 ライブラリのソースも公開されています。 ちなみにお父さん言語のFunnelでは、 もっとJoin calculus丸出しの文法でした。
- 645 名前:デフォルトの名無しさん [2008/12/23(火) 01:09:04 ]
- 【Programing in Scala】ついに届いた(笑)
自主学習進みすぎて、最早入門書は要らないんだがな・・
- 646 名前:デフォルトの名無しさん [2008/12/23(火) 11:24:49 ]
- ついに購入者が!!
どこで注文したの?
- 647 名前:デフォルトの名無しさん [2008/12/23(火) 17:24:59 ]
- >>646
Artimaのサイトで9月くらいから予約済
- 648 名前:556 [2008/12/23(火) 23:14:15 ]
- 2.7.3 RC1
www.scala-lang.org/node/417 はやっ
- 649 名前:デフォルトの名無しさん [2008/12/23(火) 23:33:16 ]
- ちゃんと日本にも発送してくれるんだ
かなり待たされたね で、結局Amazon.co.jpではいつまでたっても買えないんだろうか??
- 650 名前:デフォルトの名無しさん [2008/12/24(水) 07:02:59 ]
- Scalaで実行時にScalaのソースファイルをコンパイルして
出来たクラスのメソッドをリフレクションで実行したい時ってどんな風に書く?
- 651 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 09:08:48 ]
- >>624
ほっとくとめっちゃCPU食うよ 職場着いたら部屋が微妙に暖かかった…
- 652 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 16:46:47 ]
- プログラミングしりとり
schiphol.2ch.net/test/read.cgi/575/1010948472/l50
- 653 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 21:57:01 ]
- >>650
Scala コンパイラソースの scala/tools/nsc/Interpreter.java interpret メソッド (475 - 520 行) 427 - 432 には compileSources、437 - 438 には compileString なんてメソッドも ただし当然 scala-compiler.jar もクラスパス組み込みのこと
- 654 名前:653 mailto:sage [2008/12/24(水) 22:00:54 ]
- あと、883 - 898 の loadAndRun: メソッドで名前どおりリフレクションロード & 実行
- 655 名前:デフォルトの名無しさん [2008/12/24(水) 22:11:43 ]
- >>653-654
thx!
- 656 名前:デフォルトの名無しさん [2008/12/25(木) 10:19:00 ]
- www.ibm.com/developerworks/jp/java/library/j-scala04298.html
>trait が実際にクラスの一部として組み込まれるまで >trait の振る舞いの定義はチェックされません。 >あるいは別の言い方をすれば、trait を使用するクラス定義の中に >組み込まれるまで適切さをチェックされないメソッドを定義することができます。 これはどういう意味か教えてください あとclassに出来てtraitに出来ないことってnewだけで、 他は何でも出来るという理解でいいのでしょうか
- 657 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 11:07:52 ]
- 「late binding」ってことだけど。
C++0xだとtemplate/conceptで使うlate_checkってキーワードが増えてます。 これがないと、 > あとclassに出来てtraitに出来ないことってnewだけで、 > 他は何でも出来るという理解でいいのでしょうか となって全く使えない。
- 658 名前:657 mailto:sage [2008/12/25(木) 11:49:07 ]
- ibm.comが調子悪かったからみれなかったけど、
具体例でちゃんと説明書いてあるじゃん。 良く読みこなそう! C++はブロックごとに指定。 template <Semigroup T> T add(T lhs, T rhs) { return x + y; // Semigroup<T>::operator+ } template <Semigroup T> T add(T lhs, T rhs) { late_check { return x + y; // class Tのoperator+ } }
- 659 名前:デフォルトの名無しさん [2008/12/25(木) 11:53:12 ]
- C++ 0xのlate_checkはコンセプトじゃなくて
生成したソースコードで判断するというものですよね traitはそれに近いようなことをやってるということですか? 具体的にどういうコードを書けば遅延バインディングされるんですか?
- 660 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 13:05:13 ]
- www.ibm.com/developerworks/jp/java/library/j-scala04298.html
のどの部分が分からないの?
- 661 名前:デフォルトの名無しさん [2008/12/25(木) 13:10:45 ]
- >>660
>trait が実際にクラスの一部として組み込まれるまで >trait の振る舞いの定義はチェックされません。 >あるいは別の言い方をすれば、trait を使用するクラス定義の中に >組み込まれるまで適切さをチェックされないメソッドを定義することができます。 この文章以外は分かりました traitのメソッドでも定義されていない変数なんかを使えば普通にコンパイルエラーになるので 適切さをチェックされないメソッドというのがどんなものなのかが分からないのです
- 662 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 16:30:05 ]
- trait 中の定義は、実際にはそれを実装するクラスか、あるいはスーパークラス
内のプライベートメンバとしてその本体は別名定義され、trait 中のシグネチャが それにアクセスするゲッタセッタの形になります また、trait からはそれが指定される位置以前のほかの trait などの名前が見え るようになっています。このため、指定順を入れ替えると動作が変わることもあ りえます
- 663 名前:アク禁解禁 mailto:sage [2008/12/27(土) 16:40:54 ]
- >>661
Orderd[A]の例だと def compare(that: A): Int の定義の存在はチェックされずに、Ordered[A]をコンパイルできます。 Object withするまで定義の存在はチェックされないわけです。 宣言の正当性はチェックされているのですが。
- 664 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 22:36:35 ]
- scala.xml.NodeSeqの\\メソッドでXPath式っぽいのをかけるけど
これXPathにしなかったのはなんでだろう。 素直にXPathが使えればもっと簡潔にかけるのに。 あと属性のパターンマッチできないのも中途半端。これは属性定義が順序をもたないからだろうか?
- 665 名前:デフォルトの名無しさん [2008/12/27(土) 22:38:44 ]
- >>662-663
なるほどありがとうございます
- 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をフル実装してかつ不変な構造にしたかったら、だな。 なんか関数型言語脳になってきたのかもしれん。
|

|