我寫了一些xyz程序,並在屏幕上打印了一些東西,非常無關緊要。在這段代碼中,我發現如果我刪除與我想要打印的內容無關的行,則會收到錯誤消息。如何確定類型?
import Data.Array
horizontal inArray limit listLen = [ findProd i j | i<-[1..limit], j<-[1..(limit - listLen)]]
where
findProd a b = product [ inArray!(a,b+k) | k<-[0..(listLen-1)] ]
vertical inArray limit listLen = [ findProd i j | i<-[1..(limit-listLen)], j<-[1..limit]]
where
findProd a b = product [ inArray!(a+k,b) | k<-[0..(listLen-1)] ]
rightDiag inArray limit listLen = [ findProd i j | i<-[1..(limit - listLen)], j<-[1..(limit - listLen)] ]
where
findProd a b = product [ inArray!(a+k,b+k) | k<-[0..(listLen-1)] ]
leftDiag inArray limit listLen= [ findProd i j | i <-[1..(limit - listLen)],j<-[listLen..limit] ]
where
findProd a b = product [ inArray!(a+k,b-k) | k<-[0..(listLen-1)] ]
solve = do
x <- readFile "matrix.txt"
let limit = 20
let listLen = 4
let inArray = listArray ((1,1),(limit,limit)) $ (map read (words x))
let maxprod = maximum $ map maximum $ map (\f -> f inArray limit listLen) [horizontal,vertical,rightDiag,leftDiag]
print inArray
在這裏,如果我刪除行
let maxprod = maximum $ map maximum $ map (\f -> f inArray limit listLen) [horizontal,vertical,rightDiag,leftDiag]
我得到一個編譯錯誤。怎麼樣?它甚至與我想要打印的內容沒有關係。
您可以將編譯錯誤添加到問題中嗎? – 2011-04-02 13:09:16