プログラミング言語 Scala 7冊目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/09/04(日) 20:07:34.70ttp://www.scala-lang.org/
■リンク集
ttp://sites.google.com/site/scalatohoku/%E5%8B%89%E5%BC%B7%E4%BC%9A%E8%B3%87%E6%96%99
■前スレ
プログラミング言語 Scala 6冊目
ttp://hibari.2ch.net/test/read.cgi/tech/1307416864/
■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25
■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Proの連載記事、各々で開かれた勉強会の資料などがあります。
あ、申し訳ない。なんか別のを貼ってしまったようだ。こっちが正しい
https://gist.github.com/1443062
それで、よくわからないところがちょっと。無名パッケージを使うときって、
使い捨てのコードくらいというのが普通の認識なんだけど、無名パッケージの
package privateなstatic 変数にScalaからアクセスしたいというのはどういう状況なんでしょうか?
0656デフォルトの名無しさん
2011/12/08(木) 00:20:10.76しかしscalaとjavaの相互運用はなかなか微妙なんですね。
ちょっと自分のscalaのレベルでは併用は早過ぎたようです。
>仕事で使っているライブラリがちょっと特殊なんですよ…
なるほど。しかし、それってちょっとというかかかなり特殊なのでは?
それでもあえてやるなら、リフレクション使う、という手はありますが…
scalaとjavaの相互運用が微妙かというと、微妙な点はいくつかありますが、多くの
ケースで十分に上手くいく、というのが自分の認識です。現時点すら相互運用
のために色々妥協しているのに、100%の相互運用を目指すのはScalaにとっては
自殺行為じゃないかと
0658デフォルトの名無しさん
2011/12/08(木) 08:08:58.22今確認しました。あれ、自己申告制だと思ってたので、12/07に割り振られてたのに
気づきませんでした。今日明日くらいに書くのでご勘弁を
https://gist.github.com/1445310
0661デフォルトの名無しさん
2011/12/08(木) 13:25:08.850662デフォルトの名無しさん
2011/12/08(木) 15:28:52.530663デフォルトの名無しさん
2011/12/08(木) 16:29:33.340664デフォルトの名無しさん
2011/12/08(木) 18:03:25.860665デフォルトの名無しさん
2011/12/08(木) 23:51:10.700666デフォルトの名無しさん
2011/12/09(金) 07:15:03.230667デフォルトの名無しさん
2011/12/09(金) 18:13:50.510668デフォルトの名無しさん
2011/12/09(金) 18:33:53.150669デフォルトの名無しさん
2011/12/09(金) 19:27:30.970670デフォルトの名無しさん
2011/12/09(金) 20:12:18.61val fileText = io.Source.fromFile("data.txt").mkString
val (passed, failed) = List(49, 58, 76, 82, 88, 90) partition ( _ > 60 )
0671デフォルトの名無しさん
2011/12/09(金) 22:43:34.85def prime1(n: Stream[Int]): Stream[Int] = n.head #:: prime1(n.tail filter (_ % n.head != 0))
prime1(Stream from 2)
}
素数を求めるプログラム
面接で書けと言われたらとっさに書けないよねw
0672デフォルトの名無しさん
2011/12/09(金) 22:47:18.000673デフォルトの名無しさん
2011/12/10(土) 00:19:58.170674デフォルトの名無しさん
2011/12/10(土) 01:08:20.380675デフォルトの名無しさん
2011/12/10(土) 01:13:40.92http://eed3si9n.github.com/scala-collections-doc-ja/
http://eed3si9n.github.com/scala-collections-doc-ja/collections_14.html
0676デフォルトの名無しさん
2011/12/10(土) 10:38:14.32val cmd = "val x = 0"
といった感じにscalaで実行させたいコマンドが文字列で格納されている場合に
簡単に格納されているコマンドを実行する方法はないでしょうか?
(Compiler APIは使い方がいまいち分かりません。。。)
0677デフォルトの名無しさん
2011/12/10(土) 11:13:01.40http://partake.in/events/7b7f6551-8683-4968-855f-f8a62ec4bc93
ust
http://www.ustream.tv/channel/scala-kaigi
ニコ生
http://live.nicovideo.jp/gate/lv72707765
0679デフォルトの名無しさん
2011/12/10(土) 15:02:35.790680デフォルトの名無しさん
2011/12/10(土) 15:14:44.250681デフォルトの名無しさん
2011/12/10(土) 16:41:10.87お昼寝してたら寝過ごしたけど、どうだった?
0682デフォルトの名無しさん
2011/12/10(土) 16:44:14.00見た目は洒落てるけど、結局_ % n.head != 0なんだな。素数だから仕方ないか
0683デフォルトの名無しさん
2011/12/10(土) 16:49:00.55val settings = new scala.tools.nsc.Settings { usejavacp.value = true }
val main = new scala.tools.nsc.interpret.IMain(settings)
main.interpret("val x = 0")
val x = main.valueOfTerm("x") //Option[AnyRef]で帰ってくるので適当に取り出す
……でいけるはずなんだけど、
2.9.1のREPLで試してみたらmain.valueOfTerm("x")がNoneになっちゃうな
なんでだろ
0684デフォルトの名無しさん
2011/12/10(土) 18:29:06.33こんな課題出るわけないと思うんだけどw
Twitterのutil-eval使うか参考にすれば?
0685デフォルトの名無しさん
2011/12/10(土) 19:08:30.11ありがとうございます。
私も某ページに文字列をeval化するサンプルがあったので
それを参考にやってみたのですが、2.9.1で試したところ同じくNoneが帰ってきていました。。
>>684
さすがにこの内容そのものが出たわけではないですww
やはりutil-evalを参考にするのが正しいんでしょうね、ありがとうございます。
0686デフォルトの名無しさん
2011/12/10(土) 23:36:11.45処理系自分で作れじゃなくて、Lisp系でもなくてそういう課題が出るってどんなせめた講義なのかきになる。
0687デフォルトの名無しさん
2011/12/11(日) 17:55:11.970688デフォルトの名無しさん
2011/12/11(日) 18:01:05.490689デフォルトの名無しさん
2011/12/11(日) 18:10:54.140690デフォルトの名無しさん
2011/12/11(日) 18:11:48.96Scalaの力こそ人類の夢だからだ
って書こうとしたら先にオチが…
0691デフォルトの名無しさん
2011/12/11(日) 20:10:41.40実行時に例外で落ちることがあるね。
PackratParserを使って構文定義を書いてはまった。
ただ、常に落ちるわけではないのがよくわからない。
どうもval x = yみたいな単純コピーは危ないみたい。
0692デフォルトの名無しさん
2011/12/11(日) 20:14:49.261. 書きたいことを冗長あるいは複雑にしている。
2. 学習・教育コストが高い。
の二つがある。
言語オタクは1ばかり語りたがるが、一般人は2にしか関心ないよ。
エヴァンジェリストの諸君は、そこを勘違いしちゃダメだ。
0693デフォルトの名無しさん
2011/12/11(日) 20:50:55.920694デフォルトの名無しさん
2011/12/11(日) 21:37:17.76そういう覚え方は逆に危ないです。valが危ないわけではなくて、パーザコンビネータでは、その性質上、
val同士の相互参照が発生し得るので、それを意識してないと問題になるという話です。普通にvalを書く分に
何か危険があるわけではないです。ちなみに、そういう理由もあって、パーザコンビネータの規則には
lazyを付けることが多いです。
0696デフォルトの名無しさん
2011/12/11(日) 22:47:17.69val の順序を変えることで相互参照が断ち切れたのでしょうか?
0697デフォルトの名無しさん
2011/12/14(水) 12:11:06.620698デフォルトの名無しさん
2011/12/14(水) 13:07:23.41スキーマが何なのか知ってるやつが誰もいないとか
そこらのプログラマはXMLとか触ったことすらないのか
0699デフォルトの名無しさん
2011/12/14(水) 13:19:27.040700デフォルトの名無しさん
2011/12/14(水) 19:04:05.00何のだろう?
>XMLの
XMLのデータ定義なんて
あんまり気にしないだろう。
SOAPのWSDLやCouch/MongoみたいなDBというキーワードが出ない限り。
0701デフォルトの名無しさん
2011/12/14(水) 19:32:39.570702デフォルトの名無しさん
2011/12/14(水) 19:56:18.020703デフォルトの名無しさん
2011/12/14(水) 20:05:50.58この間のドワンゴ勉強会より内容の難易度は落ちてると思うが、見てるやつのレベルはもっと落ちてた
Scalaを難しいと言ってるやつの程度がよくわかったよ
0704デフォルトの名無しさん
2011/12/14(水) 20:11:16.16一番まともなだったというのは皮肉だなw
0705デフォルトの名無しさん
2011/12/14(水) 20:14:42.48期待してない
0706デフォルトの名無しさん
2011/12/15(木) 03:35:33.980707デフォルトの名無しさん
2011/12/15(木) 20:17:08.130708デフォルトの名無しさん
2011/12/15(木) 20:28:53.270709デフォルトの名無しさん
2011/12/16(金) 04:03:16.78http://partake.in/events/4b3afdc8-e4ec-4010-b8ec-31b89210dda0
これ一通り読んだけど、すごくわかりやすくて勉強になった
プログラム例がしっかりしてるのと、簡単なものから順番に紹介してくれてるのがいい
Scalazが結構わかった気がする
残りも楽しみだ
0710デフォルトの名無しさん
2011/12/16(金) 04:42:40.780711デフォルトの名無しさん
2011/12/18(日) 00:09:35.99入力として72と100という数値があったとして
72は、リストの値の範囲
100は、リストの値の範囲外
という処理はどう書くのが普通なんでしょうか?
0712デフォルトの名無しさん
2011/12/18(日) 00:38:27.69val inputs = List(72,100)
val (min,max) = (list.min,list.max)
for (input <- inputs) {
println(input + "は、リストの値の" + (if (min <= input && input <= max) "範囲" else "範囲外"))
}
0713デフォルトの名無しさん
2011/12/18(日) 00:38:36.200714デフォルトの名無しさん
2011/12/18(日) 06:50:08.080715デフォルトの名無しさん
2011/12/18(日) 10:05:31.870716デフォルトの名無しさん
2011/12/18(日) 10:14:06.46よくなった?
0717デフォルトの名無しさん
2011/12/18(日) 12:48:53.400718デフォルトの名無しさん
2011/12/18(日) 13:14:15.56>712-714はあんまり面白くないけど。
0719デフォルトの名無しさん
2011/12/18(日) 13:16:39.97おいこの記事読んでもさっぱり理解できないんだけど
0720デフォルトの名無しさん
2011/12/18(日) 17:31:07.68scala-2.9.1に移行、2.7のサポート打ち切り
ディレクトリ構成が微妙に変わる
(プラグイン設定を /project/plugins/ に置いてたのを /project/ に置くように)
あと修正やら改良がいろいろ 詳しくは https://github.com/harrah/xsbt/wiki/Changes
まさかとは思うけど0.7系使ってるのならはよ切り替えた方が。
0.10系からはコンパイルも早くなってるし。
0721デフォルトの名無しさん
2011/12/18(日) 18:03:55.48Read original paper.
0722デフォルトの名無しさん
2011/12/18(日) 20:25:07.12「原論文を読め、このクズ。
ちなみに俺は英語が得意だ、hahaha!」
0723デフォルトの名無しさん
2011/12/18(日) 20:29:09.950724デフォルトの名無しさん
2011/12/18(日) 22:09:01.10→
>>=
⊙
⇓
⇑
∧
これ何?
0725デフォルトの名無しさん
2011/12/18(日) 22:39:20.020726デフォルトの名無しさん
2011/12/19(月) 14:24:08.71>>721のように書くなら、Read the original paper. だよ。
0727デフォルトの名無しさん
2011/12/19(月) 21:32:17.360728デフォルトの名無しさん
2011/12/19(月) 21:41:35.37というか、その論文、5年以上かかってるのね。
0729デフォルトの名無しさん
2011/12/19(月) 21:42:32.130730729
2011/12/19(月) 21:43:47.800731デフォルトの名無しさん
2011/12/19(月) 23:43:20.50ApplicativeとかIterateeとかどうでもいい
ハスケラーに騙されてるだけ
0732デフォルトの名無しさん
2011/12/20(火) 01:27:35.060733デフォルトの名無しさん
2011/12/20(火) 01:52:30.31すべってるよ、君
0734デフォルトの名無しさん
2011/12/20(火) 16:03:27.76それがscalaなんだろうな。
haskellのapplicativeは便利なんだがな。
0735デフォルトの名無しさん
2011/12/20(火) 16:46:37.67だからハスケラーに騙されてるって言ってんだよ
悪いハスケラー「Applicativeなら綺麗に書ける!Iterateeは次世代IO!」
↓
馬鹿なスカラー「よーしそれならScalazとか作っちゃうぞ」
↓
さらに馬鹿なスカラー「なんか難しいけど流行ってるみたいだしScalaz勉強しよう」
↓
悪いハスケラー「ギャハハハほんとに作ってる!なにこの汚ねえコード!猿真似ww関数型の面汚しwww」
↓
一般ジャヴァー&シーシャーパー「Scalaって複雑そうだから触れないでおこう。あとなんかキモいし」
↓
馬鹿なスカラー「あれ?世界中から馬鹿にされてる?それによく考えたらこのライブラリ使い道ないな…」
完全に嵌められてる
0736デフォルトの名無しさん
2011/12/20(火) 17:26:33.55better javaとしてしか使えてない俺大勝利
0737デフォルトの名無しさん
2011/12/20(火) 18:08:19.610738デフォルトの名無しさん
2011/12/20(火) 19:37:05.92使わなくてもプログラムは作れるが使えばもっと抽象化できるということだろう
0739デフォルトの名無しさん
2011/12/20(火) 22:36:41.310740デフォルトの名無しさん
2011/12/20(火) 22:47:50.08どういうことかもう少し詳しく聞かせて
0741デフォルトの名無しさん
2011/12/20(火) 23:02:42.77個人的な感想だけど
デザインパターンってOOPでは直接表現できないことを、どうにか解決してるという感想をもってる
例えば新しいプログラミング言語の機構を作ったときに、その評価としてデザインパターンが解いてる問題を
直接表現できるかみたいなのもある
visitor パターンはクラス階層に操作を追加できるようにするパターンだけど
裏をかえせば、OOPでは操作の追加が難しいという欠点があるということだし
あんまり真面目に取らなくていいですw
0742デフォルトの名無しさん
2011/12/20(火) 23:38:20.540743デフォルトの名無しさん
2011/12/20(火) 23:42:11.000744デフォルトの名無しさん
2011/12/21(水) 00:16:32.21singletonは直接サポートしてる。
そういう文章はどこかにありそう。
0745デフォルトの名無しさん
2011/12/21(水) 00:29:09.630746デフォルトの名無しさん
2011/12/21(水) 01:05:08.65haskellも知らなくても組める。ファンクタの働きくらいはしっておい
ていいと思うけどな。
0747デフォルトの名無しさん
2011/12/21(水) 01:06:42.40それすら理解せずにプログラマを自称するつもりですか?
恥ずかしい人ですね
0748デフォルトの名無しさん
2011/12/21(水) 01:07:22.83この世に〜しないと駄目なんてものはない。
プログラミングしなくてもいいし。
0749デフォルトの名無しさん
2011/12/21(水) 01:26:10.42これの記述正しい?
0750デフォルトの名無しさん
2011/12/21(水) 01:31:58.16何か勘違いしてるみたいだけどデザインパターンってのは
「可能にするためのトリック」ではなくて
「よく出てくるから名前を付けてみたので共有しましょう」
なんだけどな
0751デフォルトの名無しさん
2011/12/21(水) 01:35:38.23OOP=中二病
0752デフォルトの名無しさん
2011/12/21(水) 02:26:52.833行でまとめてくれ
0753デフォルトの名無しさん
2011/12/21(水) 12:25:47.48これを難しい順に左から並べていただけませんか?
0754デフォルトの名無しさん
2011/12/21(水) 12:29:54.30■ このスレッドは過去ログ倉庫に格納されています