Create  Edit  Diff  トップページ  Index  Search  Changes  History  Source  RSS  wikifarm  Login

第二話「星降る夜に括弧降る」

概要

『プログラミングGauche』を使用した勉強会の第二回です。

  • 開催日時
    • 2008年3月26日(水) 19:00〜21:00
  • 開催場所
    • 五反田某所
  • 教材
  • 参加者
    • 五名(前回と同じメンバー)

内容

今回は六章のリストについて学びました。進め方は各々が質問を挙げて、それについて議論する 形式でした。理解が困難だったのはサラッと出てきた再帰の概念でした。以下に今回の疑問と意見を掲載 致します。

疑問、意見

  • 何でlistはconsで対を作るのかな?
    • これは本書の冒頭でも書かれていたようにマッカーシーが初期のLispを実装したIBM704が、一語をポインタのペアとして扱うことが出来たからではないかという意見が挙がりました。多分、対を用いてlistを作ると柔軟な入れ子構造が構成出来るからではないかというのがその場の回答でした。本当の所は分かりませんが。
  • 正式なリストとドットリストの違いが分からない
    • 最初、空リストの扱いに関して戸惑いましたが手を動かして色々試してみると理解出来ました。
  • evalについての例における第二引数の(interaction-environment)って何?
    • 「魔法言語リリカルLisp」でも環境に関しては学びましたが詳細な部分まで理解していなかったので分かりませんでした。環境っていくつか種類があるのかな?
  • foldってRubyのinjectメソッドじゃね?
    • foldとRubyのinjectメソッドが似ているという意見が出ました。下記のような例を挙げてみました。記述の順序は違いますが動作は確かに似ていますね。
[1,2,3,4,5].inject(0) {|sum, element| sum+element}  → 15
  • 再帰の考え方が分からない
    • 再帰の考え方が難しかったです。まず、foldについて学んでから再帰について学んだのでfoldの定義の箇所で困惑しました。先に再帰の概念を簡略にでも学んでからの方が理解し易かったかなと思います。foldで再帰を考えると最終的に初期値として定義したinitが返されるのですが、initを初期値として認識してしまうとinitが次々と加算されていく感覚が掴めないのが混乱の原因かなと思いました。実際にfoldの動作を辿っていくことで再帰が理解できました。

振り返り

  • Keep
    • 今回の会場は狭かったが少人数の参加者なら使い易い
    • 会場にホワイトボードが設置されていて重宝した
    • 予習が有効だった
  • Problem
    • 理解が浅かった(何処まで掘り下げて理解して進めていくか)
  • Try
    • プログラムの動作の深いところまで学ぶ(何故、そういう挙動をするのか等)
    • ホワイトボードorプロジェクターは情報共有の為、出来るだけ用意する

本格的に始まった気がしました。再帰については慣れないと分かり辛いですが、慣れれば 非常に快適になりそうです。次回は再帰の復習と手続きについてやります。乞うご期待!!

感想・質問・意見

Last modified:2008/03/27 13:39:24
Keyword(s):
References:[勉強会過去ログ]