こうして Scala プログラマが増えてゆくのです

@daisuke_m さん, @t_yano さん、@yuroyoro さん、 @xuwei_k さんらによる Scala な話。
16
しいたけ @yuroyoro

昔書いたscala版brainfuck……の派生言語ジェネレータwith parser combinator. http://bit.ly/dO0uG5

2011-02-25 22:30:50
都元ダイスケ🍅 @daisuke_m

求めてるのはこんなんじゃないよっ>< もっと初心者向けのやつたのむw RT @yuroyoro: 昔書いたscala版brainfuck……の派生言語ジェネレータwith parser combinator. http://bit.ly/dO0uG5

2011-02-25 22:40:51
都元ダイスケ🍅 @daisuke_m

っていうか、久々に「初心者」やってるなぁ、俺。コード晒すの大事だよね。

2011-02-25 23:14:27
しいたけ @yuroyoro

@daisuke_m じゃ近いうちにちょいと書き直してみるです。電卓とか構文木とかは、構成要素をsealedなcase classにしてみるのがお約束なんで、その辺から。次に構文木作ってみる。

2011-02-25 23:31:12
都元ダイスケ🍅 @daisuke_m

@yuroyoro sealedっていうキーワードはまだ学習していないのであります。ペアプロの時に教えて〜

2011-02-25 23:32:42
しいたけ @yuroyoro

@daisuke_m うぃ。簡単に言うと、派生先のcase classに対するパターンマッチの網羅性をコンパイラにチェックさせる仕組み。

2011-02-25 23:38:05
都元ダイスケ🍅 @daisuke_m

@yuroyoro ほーーー。 …なんかbrainf*ckっていうテーマがある意味専門的すぎて、一般的なScala学習から方向性ズレてたりしない…? 大丈夫?ww

2011-02-25 23:41:02
しいたけ @yuroyoro

@daisuke_m まったく問題ないよ。むしろいい教材だと思う。

2011-02-25 23:41:30
都元ダイスケ🍅 @daisuke_m

メリットがあるのなら、地豆のEclipse Plugin部分をScalaで書いちゃってもいいと思っている。メリットはまだはかれないけど。 コアはJavaからすんなり使えるのが大事だと思うのでJavaで維持する。 #jiemamy

2011-02-25 23:43:58
都元ダイスケ🍅 @daisuke_m

うおおお。。すげぇな。俺でも見通しが良く感じられる…。

2011-02-26 00:14:43
都元ダイスケ🍅 @daisuke_m

っていうか、自分の書いたソースを玄人に直してもらうのは、これほど勉強になるものなのか!!と再確認。驚異的だ。

2011-02-26 00:18:59
しいたけ @yuroyoro

@daisuke_m とりあえずforkして、ちょっと直してみた。Scalaでは、Javaの常識である1クラス1ファイルというのは捨てていい。意味のある小さいクラスは積極的に1ファイルにまとめるべき。 http://bit.ly/iaX7h4

2011-02-26 00:23:45
しいたけ @yuroyoro

次はLoop周りかなー。そのためには構文木作るようにしなきゃ、だ

2011-02-26 00:27:16
都元ダイスケ🍅 @daisuke_m

@yuroyoro なるほど。文化の違いが面白い!!

2011-02-26 00:28:08
しいたけ @yuroyoro

@daisuke_m と、Scala書く人は、出来るだけ1つの式にして、メソッドなどの{}は書略したがる傾向があると思。

2011-02-26 00:30:11
都元ダイスケ🍅 @daisuke_m

@yuroyoro その辺は、脳内でASTが組み立てられないからまだ読みづらい部分がある。def aaa = bbb <= ccc って、なんか「ん?」ってなるw

2011-02-26 00:32:29
都元ダイスケ🍅 @daisuke_m

っていうか、コード書く時って、脳内でAST組んでるんだ、って初めて自覚した。

2011-02-26 00:33:08
しいたけ @yuroyoro

@daisuke_m 俺も最初そうだったなぁ。慣れかな? コツは、最初の"="or"=>" とそれ以降で分割して認識すればいいのでわりとすぐ慣れると思う

2011-02-26 00:34:28
都元ダイスケ🍅 @daisuke_m

@yuroyoro うん、そこはひとまず「そういうもの」で処理する。けど、なんかいずれは無意味に「一部分だけ評価した時」の、その結果の「型」が知りたくなると思う。

2011-02-26 00:38:21
t_yano @t_yano

某ソースを読んでいてふと気になったのだけど、Scalaで1ソース上にcase classをたくさん定義した場合、それはバイトコード上では、Javaでいうstatic classの表現になっていると想定していい?

2011-02-26 00:39:27
t_yano @t_yano

なんとなく気分でそう書いてたけど、jadかけたりしたことなかった。

2011-02-26 00:39:46
しいたけ @yuroyoro

@t_yano いえ。そもそもコンパイル単位=1ClassファイルというのはScalaでは成立しませんです。実際に、1ファイル内のcase class はそれぞれトップレベルのpublic classとしてクラスファイルができます

2011-02-26 00:41:40
都元ダイスケ🍅 @daisuke_m

この「Java脳(ニワカScala脳)で書いたScala」と「Scala脳で書いたScala」のbefore/afterは貴重な教材だとおもう。

2011-02-26 00:42:32