Polymorphic record question

Bengt Kleberg <>
Tue Jun 20 09:51:03 CEST 2006

On 2006-06-20 08:17, Andrew Lentvorski wrote:
> Richard A. O'Keefe wrote:

>> I'm a little surprised that the "downcasting" hack worked at all,
>> and I wouldn't expect it to _keep_ working in future releases.
> Yeah, I was a bit surprised that it worked, too.  Presumably the 
> compiler just does a mapping from record field to tuple position number 
> and doesn't bother checking the first field to make sure that the names 
> match.

if you want to discover errors when using records it is best to avoid 
''.'' to access the members. see example below:




main(_) ->
	A = #a{},
	B = #b{},
	should_not_work(B, A),
	will_fail(B, A),

should_not_work(A, B) ->
	A_data = A#a.data,
	B_data = B#b.data,
	io:fwrite( "A_data ~w~n", [A_data] ),
	io:fwrite( "B_data ~w~n", [B_data] ).
will_fail(A, B) ->
	#a{data=A_data} = A,
	#b{data=B_data} = B,
	io:fwrite( "A_data ~w~n", [A_data] ),
	io:fwrite( "B_data ~w~n", [B_data] ).

    EPO guidelines 1978: "If the contribution to the known art resides
    solely in a computer program then the subject matter is not
    patentable in whatever manner it may be presented in the claims."

More information about the erlang-questions mailing list