トップページ⇒tech
1001コメント329KB

プログラミング言語 Scala 7冊目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/09/04(日) 20:07:34.70
The Scala Programming Language
ttp://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の連載記事、各々で開かれた勉強会の資料などがあります。
0685デフォルトの名無しさん2011/12/10(土) 19:08:30.11
>>683
ありがとうございます。
私も某ページに文字列をeval化するサンプルがあったので
それを参考にやってみたのですが、2.9.1で試したところ同じくNoneが帰ってきていました。。

>>684
さすがにこの内容そのものが出たわけではないですww
やはりutil-evalを参考にするのが正しいんでしょうね、ありがとうございます。
0686デフォルトの名無しさん2011/12/10(土) 23:36:11.45
>>685
処理系自分で作れじゃなくて、Lisp系でもなくてそういう課題が出るってどんなせめた講義なのかきになる。
0687デフォルトの名無しさん2011/12/11(日) 17:55:11.97
Scalaは死んじゃうの?
0688デフォルトの名無しさん2011/12/11(日) 18:01:05.49
それが定めならね・・・
0689デフォルトの名無しさん2011/12/11(日) 18:10:54.14
バルス
0690デフォルトの名無しさん2011/12/11(日) 18:11:48.96
何度でもよみがえるさ
Scalaの力こそ人類の夢だからだ
って書こうとしたら先にオチが…
0691デフォルトの名無しさん2011/12/11(日) 20:10:41.40
scalaのvalって定義時に前方参照してもコンパイル通るけど、
実行時に例外で落ちることがあるね。
PackratParserを使って構文定義を書いてはまった。

ただ、常に落ちるわけではないのがよくわからない。
どうもval x = yみたいな単純コピーは危ないみたい。
0692デフォルトの名無しさん2011/12/11(日) 20:14:49.26
「Scalaが難しい」という批判がある時に、
1. 書きたいことを冗長あるいは複雑にしている。
2. 学習・教育コストが高い。
の二つがある。

言語オタクは1ばかり語りたがるが、一般人は2にしか関心ないよ。
エヴァンジェリストの諸君は、そこを勘違いしちゃダメだ。
0693デフォルトの名無しさん2011/12/11(日) 20:50:55.92
言語オタクはその二つしか語りたがらないから駄目だ
0694デフォルトの名無しさん2011/12/11(日) 21:37:17.76
他に何かあるか?
0695 ◆CgacaMDhSQ 2011/12/11(日) 22:06:25.27
>>691
そういう覚え方は逆に危ないです。valが危ないわけではなくて、パーザコンビネータでは、その性質上、
val同士の相互参照が発生し得るので、それを意識してないと問題になるという話です。普通にvalを書く分に
何か危険があるわけではないです。ちなみに、そういう理由もあって、パーザコンビネータの規則には
lazyを付けることが多いです。
0696デフォルトの名無しさん2011/12/11(日) 22:47:17.69
そのときは、valの順序を変えただけで解決したので深く考えませんでした。
val の順序を変えることで相互参照が断ち切れたのでしょうか?
0697デフォルトの名無しさん2011/12/14(水) 12:11:06.62
板移転してたのか
0698デフォルトの名無しさん2011/12/14(水) 13:07:23.41
第二回Scala会議のタイムシフト見てるけど、コメントのレベル低すぎだろ
スキーマが何なのか知ってるやつが誰もいないとか
そこらのプログラマはXMLとか触ったことすらないのか
0699デフォルトの名無しさん2011/12/14(水) 13:19:27.04
?
0700デフォルトの名無しさん2011/12/14(水) 19:04:05.00
>スキーマ
何のだろう?
>XMLの

XMLのデータ定義なんて
あんまり気にしないだろう。

SOAPのWSDLやCouch/MongoみたいなDBというキーワードが出ない限り。
0701デフォルトの名無しさん2011/12/14(水) 19:32:39.57
あの放送を見たら普通はコメントより先に発言者のレベルを心配するだろ
0702デフォルトの名無しさん2011/12/14(水) 19:56:18.02
だな
0703デフォルトの名無しさん2011/12/14(水) 20:05:50.58
発言者が駄目でも何を言ってるかはわかるだろ
この間のドワンゴ勉強会より内容の難易度は落ちてると思うが、見てるやつのレベルはもっと落ちてた
Scalaを難しいと言ってるやつの程度がよくわかったよ
0704デフォルトの名無しさん2011/12/14(水) 20:11:16.16
Scalaは間違いなく難しいと言っていたきしださんの発表が
一番まともなだったというのは皮肉だなw
0705デフォルトの名無しさん2011/12/14(水) 20:14:42.48
勉強会なんてあんなもんでしょ
期待してない
0706デフォルトの名無しさん2011/12/15(木) 03:35:33.98
格下蔑んでる暇があったらコード書けよカスども
0707デフォルトの名無しさん2011/12/15(木) 20:17:08.13
scalaの終焉が近いというのはinfoQのあの記事から感じること
0708デフォルトの名無しさん2011/12/15(木) 20:28:53.27
お、おう・・・
0709デフォルトの名無しさん2011/12/16(金) 04:03:16.78
一人Scalaz Advent Calendar
http://partake.in/events/4b3afdc8-e4ec-4010-b8ec-31b89210dda0

これ一通り読んだけど、すごくわかりやすくて勉強になった
プログラム例がしっかりしてるのと、簡単なものから順番に紹介してくれてるのがいい
Scalazが結構わかった気がする
残りも楽しみだ
0710デフォルトの名無しさん2011/12/16(金) 04:42:40.78
やっぱりアニヲタなのかw
0711デフォルトの名無しさん2011/12/18(日) 00:09:35.99
Scalaで4,10,32,50,94っていうリストがあって
入力として72と100という数値があったとして
72は、リストの値の範囲
100は、リストの値の範囲外
という処理はどう書くのが普通なんでしょうか?
0712デフォルトの名無しさん2011/12/18(日) 00:38:27.69
val list = List(4,10,32,50,94)
val 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.20
(x:Int) => { val l = List(4,10,32,50,94); l.min <= x && x <= l.max }
0714デフォルトの名無しさん2011/12/18(日) 06:50:08.08
def f(list: List[Int])(x: Int) = (list.min to list.max) contains x
0715デフォルトの名無しさん2011/12/18(日) 10:05:31.87
sbtってもう0.11まで行ってたのね
0716デフォルトの名無しさん2011/12/18(日) 10:14:06.46
>> 715
よくなった?
0717デフォルトの名無しさん2011/12/18(日) 12:48:53.40
>>712が手続き的なのに対して、>>713,714は、どや顔で、元の問題の72は範囲内、100は範囲外という話を忘れている件
0718デフォルトの名無しさん2011/12/18(日) 13:14:15.56
元のつまらない問題をいかに面白くするかが腕の見せ所だな。
>712-714はあんまり面白くないけど。
0719デフォルトの名無しさん2011/12/18(日) 13:16:39.97
http://eed3si9n.com/ja/essence-of-iterator-pattern
おいこの記事読んでもさっぱり理解できないんだけど
0720デフォルトの名無しさん2011/12/18(日) 17:31:07.68
sbt0.10.1→sbt0.11.1なら
scala-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.48
>>719
Read original paper.
0722デフォルトの名無しさん2011/12/18(日) 20:25:07.12
>721の翻訳

「原論文を読め、このクズ。
ちなみに俺は英語が得意だ、hahaha!」
0723デフォルトの名無しさん2011/12/18(日) 20:29:09.95
突っ込むなら定冠詞抜けてるのを突っ込まないと
0724デフォルトの名無しさん2011/12/18(日) 22:09:01.10
⊛ 
→
>>=
⊙
⇓
⇑
∧
これ何?
0725デフォルトの名無しさん2011/12/18(日) 22:39:20.02
>>=はわかるだろ
0726デフォルトの名無しさん2011/12/19(月) 14:24:08.71
>>722
>>721のように書くなら、Read the original paper. だよ。
0727デフォルトの名無しさん2011/12/19(月) 21:32:17.36
単数形でいいの?
0728デフォルトの名無しさん2011/12/19(月) 21:41:35.37
"Applicative programming with effects"も合せて。
というか、その論文、5年以上かかってるのね。
0729デフォルトの名無しさん2011/12/19(月) 21:42:32.13
どうでも良い話広げようとするんじゃねえよ
07307292011/12/19(月) 21:43:47.80
誤爆
0731デフォルトの名無しさん2011/12/19(月) 23:43:20.50
同意
ApplicativeとかIterateeとかどうでもいい
ハスケラーに騙されてるだけ
0732デフォルトの名無しさん2011/12/20(火) 01:27:35.06
ApplicativeわからないとScala本当に理解しているとは言えないな
0733デフォルトの名無しさん2011/12/20(火) 01:52:30.31
>>732
すべってるよ、君
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.55
valとパターンマッチと便利なコレクションとimplicit parameterと型推論があるだけの
better javaとしてしか使えてない俺大勝利
0737デフォルトの名無しさん2011/12/20(火) 18:08:19.61
ApplicativeわからないとScala本当に理解しているとは言えないな
0738デフォルトの名無しさん2011/12/20(火) 19:37:05.92
Applicativeを無視する奴=OOPにおいてデザパタを無視するstaticおじさん
使わなくてもプログラムは作れるが使えばもっと抽象化できるということだろう
0739デフォルトの名無しさん2011/12/20(火) 22:36:41.31
デザインパターンってOOPの敗北の結晶だよね
0740デフォルトの名無しさん2011/12/20(火) 22:47:50.08
>>739
どういうことかもう少し詳しく聞かせて
0741デフォルトの名無しさん2011/12/20(火) 23:02:42.77
>>740
個人的な感想だけど
デザインパターンってOOPでは直接表現できないことを、どうにか解決してるという感想をもってる

例えば新しいプログラミング言語の機構を作ったときに、その評価としてデザインパターンが解いてる問題を
直接表現できるかみたいなのもある

visitor パターンはクラス階層に操作を追加できるようにするパターンだけど
裏をかえせば、OOPでは操作の追加が難しいという欠点があるということだし


あんまり真面目に取らなくていいですw
0742デフォルトの名無しさん2011/12/20(火) 23:38:20.54
そういうのは専用スレでやれよ。
0743デフォルトの名無しさん2011/12/20(火) 23:42:11.00
別に大した話題もないしここでもいい
0744デフォルトの名無しさん2011/12/21(水) 00:16:32.21
Scalaではどうなるのか?ってのはおもしろいかもね。
singletonは直接サポートしてる。
そういう文章はどこかにありそう。
0745デフォルトの名無しさん2011/12/21(水) 00:29:09.63
Applicativeって本当に理解しないとダメなの?
0746デフォルトの名無しさん2011/12/21(水) 01:05:08.65
たぶん、知らなくてもプログラムは組めるよ。scalaは知らないけどな。
haskellも知らなくても組める。ファンクタの働きくらいはしっておい
ていいと思うけどな。
0747デフォルトの名無しさん2011/12/21(水) 01:06:42.40
>>745
それすら理解せずにプログラマを自称するつもりですか?
恥ずかしい人ですね
0748デフォルトの名無しさん2011/12/21(水) 01:07:22.83
>>745
この世に〜しないと駄目なんてものはない。
プログラミングしなくてもいいし。
0749デフォルトの名無しさん2011/12/21(水) 01:26:10.42
http://learnyouahaskell.com/functors-applicative-functors-and-monoids
これの記述正しい?
0750デフォルトの名無しさん2011/12/21(水) 01:31:58.16
>>741
何か勘違いしてるみたいだけどデザインパターンってのは
「可能にするためのトリック」ではなくて
「よく出てくるから名前を付けてみたので共有しましょう」
なんだけどな
0751デフォルトの名無しさん2011/12/21(水) 01:35:38.23
>>741
OOP=中二病
0752デフォルトの名無しさん2011/12/21(水) 02:26:52.83
>>749
3行でまとめてくれ
0753デフォルトの名無しさん2011/12/21(水) 12:25:47.48
scala,java,c#,c,c++,ruby,python,php
これを難しい順に左から並べていただけませんか?
0754デフォルトの名無しさん2011/12/21(水) 12:29:54.30
(その他大勢の複雑極まる言語), C
0755デフォルトの名無しさん2011/12/21(水) 12:46:49.14
>>752
英語がわからないなら
読むのを
諦めろ。 ハイ3行。
0756デフォルトの名無しさん2011/12/22(木) 05:05:22.67
Scala IDE for Eclipse 2.0がついに出たそうですが、どんなもんでしょ?
0757デフォルトの名無しさん2011/12/22(木) 06:52:45.28
相変わらず遅いよ。
オートコンプリートをオフにできない(チェックを外しても復活する)のも相変わらず。
閉じかっこが文脈を読まずに挿入されるし、タブを使わない設定でもインデントにタブが入る。
デバッガは駄目だし、参照ジャンプもよく失敗する。
0758デフォルトの名無しさん2011/12/23(金) 10:52:02.92
Scalaを新鮮に保つ
http://www.infoq.com/jp/news/2011/12/scala-fresher
0759デフォルトの名無しさん2011/12/23(金) 22:03:00.28
InfoQしつけええええええええええええええ
0760デフォルトの名無しさん2011/12/24(土) 01:22:10.38
infucku
0761デフォルトの名無しさん2011/12/24(土) 08:06:41.33
Alex bullshitを叩けよ
0762デフォルトの名無しさん2011/12/24(土) 21:39:29.71
ScalaがJVMの発展阻害しているから叩かれてるの?
0763デフォルトの名無しさん2011/12/24(土) 22:20:58.01
>>762
ちょっと何を言ってるのかわからないですね
0764デフォルトの名無しさん2011/12/25(日) 00:23:22.71
>>762
どういうことなのかもっと詳しくお願い
0765デフォルトの名無しさん2011/12/25(日) 15:11:31.34
アホは放置で。
0766デフォルトの名無しさん2011/12/26(月) 14:25:55.76
Typesafe、Scale向けのEclipseプラグイン「Scala IDE for Eclipse 2.0」をリリース
http://sourceforge.jp/magazine/11/12/26/0449214
0767デフォルトの名無しさん2011/12/27(火) 13:00:38.43
はぁ〜giter8べんりすぎだろ
だれか冬休み中にsbt-coverageのテンプレ追加しといて
sbt0.11でよろしくおねがいします
0768デフォルトの名無しさん2011/12/27(火) 14:34:44.82
なんだってwikipediaのFantomの頁は、ですます調なんだよ…
0769デフォルトの名無しさん2012/01/06(金) 13:00:28.41
エバンジェリストって要するにステマってことだよね?
0770デフォルトの名無しさん2012/01/06(金) 13:25:35.74
自分の身元や立場を明確にしたステマがどこの世界にあるんだよ
全然ステルスになってないだろ
0771デフォルトの名無しさん2012/01/06(金) 19:14:33.97
裏で小田好に金もらってscalaはスゴイ!って言い回ってんだろ?
0772デフォルトの名無しさん2012/01/08(日) 10:55:33.32
なんでSymbolのArrayから要素取り出すときはapply明示的に書かないとダメなん?
ClassManifest[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.62
>>772
Arrayオブジェクトの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.52
素直に生成と取得をわけるのが一番楽でないかい?
val a = Array('a,'b,'c)
a(0)
0776デフォルトの名無しさん2012/01/09(月) 00:38:09.20
普通はそれでもいいんですが
mapの中なんで一時変数作りたくなかったんですよ
0777デフォルトの名無しさん2012/01/10(火) 06:32:33.59
>>769
逆。ステマってのが要するにエバンジェリスト。
0778デフォルトの名無しさん2012/01/10(火) 11:17:31.48
そこまでこだわるんならArrayはmutableなのでIndexedSeqにしようぜ
0779デフォルトの名無しさん2012/01/10(火) 22:10:51.60
ステマよりスマタだよ アンタ
0780デフォルトの名無しさん2012/01/13(金) 10:37:01.73
身持ちの硬いJavaのfinalクラスをpimpしてハッピーヒモ生活をenjoyしますぜ?
0781デフォルトの名無しさん2012/01/13(金) 11:48:31.09
誰にでも継承させるビッチclassは怖くて使いたくない
0782デフォルトの名無しさん2012/01/13(金) 12:08:13.62
scala.runtime.BitchString
0783デフォルトの名無しさん2012/01/14(土) 23:55:04.92
Cygwin + Cygterm + Tera TermでREPLやsbtの行編集が使えてる人いる?

rxvtなら英語の情報があるんだけどTera Termは和製だからなぁ
0784デフォルトの名無しさん2012/01/15(日) 00:14:57.33
Cygwinなんて捨てろよ
■ このスレッドは過去ログ倉庫に格納されています