SV: [erlang-questions] A style question

Richard O'Keefe <>
Mon Feb 15 00:48:25 CET 2010


On Feb 12, 2010, at 7:05 PM, Ulf Wiger wrote:

> There is an alternative that actually has a distinct advantage:
>
> mnesia:activity(
>    transaction,
>    fun my_transaction_fun/0)
>
> The advantage is that when tracing, you get much more readable output.

I see.  There is a big disadvantage that nothing actually stops
my_transaction_fun/0 being called when it is *not* in a transaction.

The great thing about

     mnesia:transaction(fun () ->
	...
     end

or

     mnesia:activity(transaction, fun () ->
	...
     end

is that the ... code is visibly and necessarily inside a transaction.

I wonder whether there could be a way to get the best of both worlds?
I take your point about tracing, but is there any reason why a
function name displayed in tracing _has_ to be a real function
name?  Could there be some way of attaching a name to a fun for
tracing purposes?  Maybe something like

     mnesia:activity(transaction, fun:my_transaction () ->
	...
     end

This is not, and isn't intended to become, and EEP.
There's probably a much better way to do it.




More information about the erlang-questions mailing list