[pure-lang-svn] SF.net SVN: pure-lang: [338] pure/trunk/examples/array.pure
Status: Beta
Brought to you by:
agraef
From: <ag...@us...> - 2008-06-30 01:08:18
|
Revision: 338 http://pure-lang.svn.sourceforge.net/pure-lang/?rev=338&view=rev Author: agraef Date: 2008-06-29 18:08:27 -0700 (Sun, 29 Jun 2008) Log Message: ----------- Rename tarray -> Array. Modified Paths: -------------- pure/trunk/examples/array.pure Modified: pure/trunk/examples/array.pure =================================================================== --- pure/trunk/examples/array.pure 2008-06-30 00:47:15 UTC (rev 337) +++ pure/trunk/examples/array.pure 2008-06-30 01:08:27 UTC (rev 338) @@ -54,11 +54,11 @@ nullary nil; // array type check -arrayp (tarray _) = 1; +arrayp (Array _) = 1; arrayp _ = 0; // create an empty array -emptyarray = tarray nil; +emptyarray = Array nil; // create an array from a list array xs = foldl append emptyarray xs if listp xs; @@ -67,11 +67,11 @@ array2 xs = array (map array xs); // create an array of a given size filled with a constant value -mkarray x n::int = tarray (mkarray x n) +mkarray x n::int = Array (mkarray x n) with mkarray x n::int = nil if n <= 0; = tip x if n == 1; - = tarray_mkbin (n mod 2) + = array_mkbin (n mod 2) (mkarray x (n - n div 2)) (mkarray x (n div 2)); end; @@ -80,7 +80,7 @@ mkarray2 x (n::int, m::int) = mkarray (mkarray x m) n; // get array size -#(tarray a) = #a +#(Array a) = #a with #nil = 0; #(tip _) = 1; @@ -89,7 +89,7 @@ end; // get value by index -(tarray a)!i::int = a!i +(Array a)!i::int = a!i with (tip x)!0 = x; (bin _ a1 a2)!i::int = a1!(i div 2) if i mod 2 == 0; @@ -98,14 +98,14 @@ end; // get value by indices from two-dimensional array -x@(tarray _)!(i::int, j::int) = x!i!j; +x@(Array _)!(i::int, j::int) = x!i!j; // check for an empty array -null (tarray nil) = 1; -null (tarray _) = 0; +null (Array nil) = 1; +null (Array _) = 0; // get all array members in list form -members (tarray a) = members a +members (Array a) = members a with members nil = []; members (tip x) = [x]; @@ -116,17 +116,17 @@ end; // get all members of an two-dimensional array in list form -members2 x@(tarray _) = map members (members x); +members2 x@(Array _) = map members (members x); // get the first array member -first (tarray a) = first a +first (Array a) = first a with first (tip x) = x; first (bin _ a1 _) = first a1; end; // get the last array member -last (tarray a) = last a +last (Array a) = last a with last (tip x) = x; last (bin 0 _ a2) = last a2; @@ -134,41 +134,41 @@ end; // remove the first member from an array -rmfirst (tarray a) = tarray (rmfirst a) +rmfirst (Array a) = Array (rmfirst a) with rmfirst (tip _) = nil; - rmfirst (bin 0 a1 a2) = tarray_mkbin 1 a2 (rmfirst a1); - rmfirst (bin 1 a1 a2) = tarray_mkbin 0 a2 (rmfirst a1); + rmfirst (bin 0 a1 a2) = array_mkbin 1 a2 (rmfirst a1); + rmfirst (bin 1 a1 a2) = array_mkbin 0 a2 (rmfirst a1); end; // remove the last member from an array -rmlast (tarray a) = tarray (rmlast a) +rmlast (Array a) = Array (rmlast a) with rmlast (tip _) = nil; - rmlast (bin 0 a1 a2) = tarray_mkbin 1 a1 (rmlast a2); - rmlast (bin 1 a1 a2) = tarray_mkbin 0 (rmlast a1) a2; + rmlast (bin 0 a1 a2) = array_mkbin 1 a1 (rmlast a2); + rmlast (bin 1 a1 a2) = array_mkbin 0 (rmlast a1) a2; end; // insert a new member at the beginning of an array -insert (tarray a) y = tarray (insert a y) +insert (Array a) y = Array (insert a y) with insert nil y = tip y; insert (tip x) y = bin 0 (tip y) (tip x); - insert (bin 0 a1 a2) y = tarray_mkbin 1 (insert a2 y) a1; - insert (bin 1 a1 a2) y = tarray_mkbin 0 (insert a2 y) a1; + insert (bin 0 a1 a2) y = array_mkbin 1 (insert a2 y) a1; + insert (bin 1 a1 a2) y = array_mkbin 0 (insert a2 y) a1; end; // append a new member at the end of an array -append (tarray a) y = tarray (append a y) +append (Array a) y = Array (append a y) with append nil y = tip y; append (tip x) y = bin 0 (tip x) (tip y); - append (bin 0 a1 a2) y = tarray_mkbin 1 (append a1 y) a2; - append (bin 1 a1 a2) y = tarray_mkbin 0 a1 (append a2 y); + append (bin 0 a1 a2) y = array_mkbin 1 (append a1 y) a2; + append (bin 1 a1 a2) y = array_mkbin 0 a1 (append a2 y); end; // update a given array position with a new value -update (tarray a) i::int y = tarray (update a i y) +update (Array a) i::int y = Array (update a i y) with update (tip _) 0 y = tip y; update (bin b a1 a2) i::int y = bin b (update a1 (i div 2) y) a2 @@ -178,11 +178,11 @@ end; // update a given position of a two-dimensional array with a new value -update2 x@(tarray a) (i::int, j::int) y +update2 x@(Array a) (i::int, j::int) y = update x i (update (x!i) j y); // compare two arrays for equality -tarray a == tarray b = a == b +Array a == Array b = a == b with nil == nil = 1; nil == tip _ = 0; @@ -196,7 +196,7 @@ end; // compare two arrays for inequality -tarray a != tarray b = a != b +Array a != Array b = a != b with nil != nil = 0; nil != tip _ = 1; @@ -212,6 +212,6 @@ /* Private functions, don't invoke these directly. */ // construct a binary array node -tarray_mkbin _ nil a2 = a2; -tarray_mkbin _ a1 nil = a1; -tarray_mkbin b a1 a2 = bin b a1 a2; +array_mkbin _ nil a2 = a2; +array_mkbin _ a1 nil = a1; +array_mkbin b a1 a2 = bin b a1 a2; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |