Step by Step Scala #04 にいってきた

  • Monad の話
    • 定型だよ
      • Option型 とか List型 から入ってみよう
  • fold の話
  • closure
  • Coq をやればいいじゃない
  • バスを予約すればいいじゃない
  • Swarm : スケールする継続を使ったフレームワークhttp://code.google.com/p/swarm-dpl/
  • flatten は,List[List[A] ] -> List[A] だった
    • Tree[A] じゃない
      • List[List[A] ] なのに,flatten がcar に対しても呼ばれてんのは何でんじゃー.と思ったら気の所為だった
  • ダックタイピングもできるよ
    • この辺がObject 指向的な
      • 無名クラスでメソッドを持つものとして指定する
  • 半透明の名刺を頂いた
  • for の中身は展開した中身を考えれるようになった方が慣れそう
    • yield => map
    • if => filter
    • 多重ループ => flatMap(n-1回) + map
  • 懇親会の 約40% がAgda セミナーに行っていたとかいう
  • Scala には単純な末尾再帰があるよ
// map の型
def map[A](List[A], f:A=>B):List[B]

// ダックタイピング的な(コピペ
def hello( who:{def name:String} ) = "Hello I'm " + who.name
class Dog(var name:String)
hello( new Dog("pochi") ) 

どうでもいいツッコミ

  • とりあえず append → reverse でも良かったのでは
    • 末尾再帰するとこうやって書けるよーで
      • 制限時間的な意味で

参考