Step by Step Scala [vol.02]@scala-be に行ってきた

  • 脱線してもいいって楽
  • ソース読む
    • 間違えて,2.8.0 の svn のソースを読んでいてわからんくなっていた
      • もういっそ 2.8.0 をコンパイルしてみた
      • $ ant だけでてきたみたい
  • Emobile が繋りにくい
  • 今回は繋がったので,twitter に流しながらできた
    • というか本編聞いてますかー?(自分
  • def love+ はできない
    • def love_+ はできる
  • そういえば,def unary_= とか def name_= もできるお
  • ラムダは val id = (x:Any) => x みたく => を使います
    • 括弧は省略できないけど,括弧の中に書くときは省略できたりする
      • (1 to 2).map(x=>x+1) みたく
  • call by name は,どうなんだろ
    • DSL を書きたい意見もあるかもだけど
      • それだったら括弧を省略できるようにした方が
  • (x:=>Int) のパースができないのがよくわかんない
    • (x: =>Int) はできる
  • obj.getClass.getMethods.foreach(println)
  • h("Int").m とか

懇親会

  • agda の研修に行ってきた

call by name について例を
うーん.この i < 3 の辺が嬉しいんだろうか?
loop がブロック取れるようにすると,確かに文法拡張したように見えるけどー.
ふーむ.

scala> def loop(f:()=>Unit,x:=>Boolean){f();if(x)loop(f,x)}
<console>:1: error: ':' expected but identifier found.
       def loop(f:()=>Unit,x:=>Boolean){f();if(x)loop(f,x)}
                            ^
scala> def loop(f:()=>Unit,x: =>Boolean){f();if(x)loop(f,x)}
loop: (() => Unit,=> Boolean)Unit

scala> {var i = 0; loop(()=>{i+=1;println(i)},i < 3)}
1
2
3
scala> i
<console>:9: error: not found: value i
       i
       ^

まったく別の疑問なんだけど,このブロックなに?
スコープができる.

まだまだscala はよくわからんなー.

http://www.amazon.co.jp/exec/obidos/ASIN/4844327453/search042-22/ref=nosim/
Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)