読書会(Scalaスケーラブルプログラミング)第9回議事録

[ 戻る ]


Scalaスケーラブルプログラミング第9回議事録
2010年7月17日(土)
参加者: 高橋(徹)、松永、中島、高橋(智)、根本、小棚木、今井、石黒、吉本、門脇、村山、岩室(記)

■30.6.3 回路シミュレーションの実装

p.545 リスト30.8
> > val d, e = new Wire

new Wire が2回実行されるのはわかりにくい。

> > def fullAdder
「さすが関数型。入出力がそのまま書ける」
「いや、これなら他の言語でもできるんじゃ……」

■30.7 まとめ

・回路シミュレーションのサンプルは、あまり並列で動いている実感がない。
・プログラムを動かしても実感が得られなさそう。
・コードを見ても、「確かに並列」という感じがしない。


【第31章 パーサー・コンビネーター】

・JavaCCがない。
・yacc (Yet another Compiler Compiler)
・ヤクだからbison

■31.1 サンプル:算術式

・このサンプルはScala? → 違う。BNF。
・BNFってこんな表記だっけ? → BNFの派生として [...] や {...} は一般的らしい。

p.551 リスト31.1
・「~」って何? → トークンを結合する演算子。p.552(3)参照。

p.552 最下段の出力例
・入力が11文字なのに、何故結果が12? → EOFも込み?

■31.3 基本正規表現パーサー

・「"""」って何? → 「\」や改行を単なる文字列リテラルとして処理する。

■31.4 他のパーサーの使用例:JSON

p.555 リスト31.4
・JSONのBNFに記述されている [members], [values] はインライン展開されている。
・何故識別子が循環しても問題ない? → def だから。

p.557
・「^」は何と読む? → 「ハット」でよい。
・+A, +B って何? →「19.3 変位指定アノテーション」を参照。デフォルトで
は非変(nonvariant)、「+」は共変(covariant)、「-」は反変(contravariant)

■31.6 パーサー・コンビネーターの実装

p.561 記号名と英字名の選択
・これってできるんですか?
・指針しか言っていないような気がする。
・あたりまえのことを言っているような気がする。
・「読者」は「reader」の翻訳。DSLを読む人?

■31.6.3 Parserクラス
・「extends (Input => ParseResult[T])」って何? → リストの直後に説明あり。

■31.6.6 逐次合成

p.565 同節最後のリストの直前
・・「<~ と ~< の2つの」⇒「~<」は「<~」の間違い。

■31.7 文字列リテラルと正規表現

・「~」がフォントとして上に寄っているのは演算子として見辛い。
・フォントの種類によって上に寄ってたり中央だったりするが、正しいのは?
→ タイプライタだと、上に寄っているはず。

■31.9 エラー報告

p.571 上のリスト
・「@」って何? → Successオブジェクト自体を拾うため。p.259参照。

【第32章 GUIプログラミング】

■32.1 最初に作るSwingアプリケーション

p.575
・「Swingの通常のFrame」→「JFrame」のこと?

■32.2 パネルとレイアウト

p.577
・EmptyBorder の3つ目の引数だけ「10」なのは何故? → bottom の部分だから、
レイアウトの都合ではないか。

■32.3 イベント処理

p.578
・「deafTo」って何? → 「deaf to」で「〜に耳をかさない」

p.579 の2つ目のリスト
・「reactions += {...」の「{...}」の部分は何? →
-「15.7.2 部分関数としてのケースシーケンス」参照。
- {...} は関数定義。
- match が省略されている。
- 引数に対してパターンマッチを行っている。
- ボタンが複数あった場合はどうする? → 後で例が出てくる。

■32.4 アンプル:摂氏・華氏換算プログラム

p.581 リスト32.4
・小文字で定義されたobjectは何? → コンパニオンオブジェクト
・「`…`」は何? p.582の下に説明。「15.2.3.1 変数か定数か」参照。

【第33章 SCellsスプレッドシート】

p.589 リスト33.5
・「mkString」って何? → リストを文字列化。引数は、プリフィックス、中置
文字列、サフィックスの順番。

p.591 上の「def cell」のリスト
・cellの1文字目に英小文字を受け付けるのはバグ?
→ columnの計算結果が正しくなくなるので、おそらくバグ。

・597 リスト33.8
・「/:」って何? → 左畳み込み。(foldl)


[ 戻る ]