[erlang-questions] 2D Map Arrays

Jeff Crane <>
Mon Sep 11 21:37:34 CEST 2006



--- Richard Carlsson <> wrote:

> Jeff Crane wrote:
> > Can anyone post example usage for the Array
> > implementation? 
> > 
> > I'd like to see proper usage.
> > 
> On the other hand, there _is_ a heap of unit testing
> code
> inside the module, with plenty of usage examples.

I dont see it.

-ifdef(EUNIT).
new_test_() ->
    N0 = ?LEAFSIZE,
    N01 = N0+1,
    N1 = ?NODESIZE*N0,
    N11 = N1+1,
    N2 = ?NODESIZE*N1,
   
[?_assertMatch(#array{size=0,max=N0,default=undefined,elements=N0},
		   new(0)),
     ?_assertMatch(#array{size=N0,max=N0,elements=N0},
new(N0)),
    
?_assertMatch(#array{size=N01,max=N1,elements=N1},
new(N01)),
     ?_assertMatch(#array{size=N1,max=N1,elements=N1},
new(N1)),
    
?_assertMatch(#array{size=N11,max=N2,elements=N2},
new(N11)),
     ?_assertMatch(#array{size=N2, max=N2,
default=42,elements=N2},
		   new(N2,42)),
     ?_assert(new() == new(0)),
     ?_assert(new(0) == new(0,undefined)),
     ?_assert(0 == array:size(new())),
     ?_assert(undefined == default(new())),
     ?_assert(new(10) == new(10,undefined)),
     ?_assert(17 == array:size(new(17))),
     ?_assert(4711 == default(new(0,4711)))     
    ].
-endif.

This doesn't have any real meaning to me. I'm sure
it's because I don't have enough erlang experience to
understand what that's supposed to do, but it's nearly
incomprehensible compared to 

> Did you not see the html documentation
> (http://user.it.uu.se/~richardc/array/array.html)?

Which I had not seen.

> > How do I push a value into the array?
> 
> Use the 'set' function. I will probably add some
> extra functions such as 'append' later.
> 
> > Does it dynamically resize?
> 
> Yes.

test() ->
	MyNewArr = array:new(0,0),
	MyBiggerArr = array:set(1,4,MyNewArr),
	array:size(MyBiggerArr).

That's an example I can understand. Arrays are
identified by the tuples returned from array:new

All functions are essentially read-only functions, but
you cannot reassign variables so this requires
reassignment to new Atoms as the array is processed.

I now know more about how to use the Array module for
temporary data storage than I know about ets (
http://www.google.com/search?hl=en&lr=&safe=off&q=usage+erlang+example+ets&btnG=Search
- that's a lot of digging for not much in the way of
examples).


Yes, I'm not amazingly good at learning how to read
and use erlang modules, but I am happy to be the
newbie filter. 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



More information about the erlang-questions mailing list