0
我試圖通過從矩陣中逐一切分第一列來查找矩陣的轉置。看起來像我匹配模式「數組包含單個數組包含單個元素」。不知道這是否會導致錯誤。幫助我找出我錯在哪裏。函數中的非窮盡模式 - 查找下界
module Main(main) where
import System.IO
firstCol [[]] = []
firstCol ((x:xy):xs) = [x] ++ firstCol xs
--firstCol [x:[]] = [x] -- not working
firstCol [x:xy] = [x]
--firstCol [x] = [x]
restCols [x:xy] = [xy]
restCols ((x:xy):xs) = [xy] ++ restCols xs
zipz [[]] = [[]]
zipz (xs) = [firstCol xs] ++ (zipz $ restCols xs)
main = do
print $ zipz [[1,2,3],[2,4,5],[5,6,7]]
情況'firstCol []','restCols []'和'zipz []''怎麼辦? 'firstCol'只處理一個包含空列表的列表,至少包含一個包含至少一個元素的元素的列表,以及包含至少一個元素的一個元素的列表(因爲它出現在'( (x:xy):xs)'case)。 restCols只能處理一個包含至少一個元素的元素列表和一個包含至少一個至少包含一個元素的列表的列表。 'zipz'靠近一個包含空列表的列表模式,然後在其他列表中搜索。順便說一下:'Data.List.transpose'。 – bheklilr