# HG changeset patch # User Chris Cannam # Date 1355748428 0 # Node ID e2c834980152cda99741a5fb4f01e09f9579c12f # Parent e8d404787c35af0af4aa84c72d1f4d2559e72e0c Experiment with making double[] vectors tagged types (to increase opacity) diff -r e8d404787c35 -r e2c834980152 block.yeti --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/block.yeti Mon Dec 17 12:47:08 2012 +0000 @@ -0,0 +1,41 @@ +module block; + +import java.util: Arrays; + +zeros n = + Block new double[n]; + +deblock b is (Block ~double[]) -> ~double[] = + case b of Block a: a esac; + +ones n = + (v = deblock (zeros n); + for [0..n-1] do i: v[i] := 1.0 done; + Block v); + +block l is list? -> (Block ~double[]) = + (arr = array(l); + len = length arr; + v = deblock (zeros len); + for [0..len-1] do i: v[i] := arr[i] done; + Block v); + +arrayWrap b is (Block ~double[]) -> array = + array(deblock b); + +blockLength b = + length (arrayWrap b); + +copyOfBlock b is (Block ~double[]) -> (Block ~double[]) = + (v = deblock b; + Block Arrays#copyOf(v, length(arrayWrap b))); + +subBlock b start len is (Block ~double[]) -> number -> number -> (Block ~double[]) = + Block Arrays#copyOfRange(deblock b, start, start + len); + +{ +zeros, ones, block, +blockLength, +copyOfBlock, subBlock, +} +