def transaction[A](func: => A):A っていう関数定義して使うとかそういうこと?