読書会(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)
[ 戻る ]