[Haskell-beginners] Haskell Array Index out of range

James cnjamesdeng at gmail.com
Sun Jun 5 13:35:54 CEST 2011


Dear all,

Today I spend nearly one day's time to debug this exception, but still
haven't got a solution. My code is pasted [here][1]. 
The program throws an exception when evaluating this line:
	points = assert (len > 0) $ A.listArray (1::Int, len) $ map (\(u,i,r)
-> [u,i]) rts
Below is my ghci debug session. I still don't understand why it has a
range of (0, -193459561) when the 'len' binding is actually 90570.

	*Main> :break 125
	Breakpoint 4 activated at SVMCF.hs:125:13-86
	*Main> :trace main
	Stopped at SVMCF.hs:125:13-86
	_result :: UA.Array Int [User] = _
	len :: Int = 90570
	rts :: [RTuple] = (1,1,5.0) : (1,2,3.0) : (1,3,4.0) : (1,4,3.0) :
					  (1,5,3.0) : ....
	[SVMCF.hs:125:13-86] *Main> :lis
	124      points :: A.Array Int [Int]
	125      points = assert (len > 0) $ A.listArray (1::Int, len) $ map
(\(u,i,r) -> [u,i]) rts
	126      values :: UA.UArray Int Double
	[SVMCF.hs:125:13-86] *Main> :ste
	Stopped at SVMCF.hs:125:13-28
	_result :: UA.Array Int [User] -> UA.Array Int [User] = _
	len :: Int = 90570
	[SVMCF.hs:125:13-28] *Main> :ste
	Stopped at SVMCF.hs:125:21-27
	_result :: Bool = _
	len :: Int = 90570
	[SVMCF.hs:125:21-27] *Main> :ste
	Stopped at SVMCF.hs:125:32-86
	_result :: UA.Array Int [User] = _
	len :: Int = 90570
	rts :: [RTuple] = (1,1,5.0) : (1,2,3.0) : (1,3,4.0) : (1,4,3.0) :
					  (1,5,3.0) : ....
	[SVMCF.hs:125:32-86] *Main> :ste
	Stopped at SVMCF.hs:125:32-56
	_result :: [[User]] -> UA.Array Int [User] = _
	len :: Int = 90570
	[SVMCF.hs:125:32-56] *Main> :lis
	124      points :: A.Array Int [Int]
	125      points = assert (len > 0) $ A.listArray (1::Int, len) $ map
(\(u,i,r) -> [u,i]) rts
	126      values :: UA.UArray Int Double
	[SVMCF.hs:125:32-56] *Main> len
	90570
	[SVMCF.hs:125:32-56] *Main> :ste
	Stopped at SVMCF.hs:125:60-86
	_result :: [[User]] = _
	rts :: [RTuple] = (1,1,5.0) : (1,2,3.0) : (1,3,4.0) : (1,4,3.0) :
					  (1,5,3.0) : ....
	[SVMCF.hs:125:60-86] *Main> :ste
	*** Exception: Ix{Int}.index: Index (1) out of range ((1,-193459561))


  [1]: http://hpaste.org/47460/haskell_array_index_out_of_ran
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110605/10fb36e6/attachment.htm>


More information about the Beginners mailing list