>>396

気になってるのは out が前触れなしに出てきたからでしょ。
これってたとえば 「def add1(a: Int) = a + 1」 の add の直後に出てくる a つまり仮引数と一緒なんですよ。

で、もう最初に気になったあたりを見直すと、

def using[T](out : OutputStream)(f : Outputstream => T)

ってなってて、結果的に usingFile の 2 つめの引数の型は「Outputstream => T」になる。
これは「Outputstream を一つ引数にとり T を返す関数」を要求してることになるから、

(out: Outputstream) => hogehoge....

と書くところを

out => hogehoge...

と書けるわけ。