簡體   English   中英

Haskell-類型匹配

[英]Haskell- Type matching

我無法從輔助函數獲取輸出以匹配我正在使用以下代碼的函數輸出:

getSemiDiag :: [[Maybe Player]] -> Int -> Int -> [Maybe Player]
getSemiDiag [] _ _ = []
getSemiDiag (x:xs) start size = if start > (size -1)
                            then []
                            else (x !! start) : (getSemiDiag xs (start+1) size)



semiRight :: [[Maybe Player]] -> Int -> Int -> [[Maybe Player]]
semiRight [] _ _ = []
semiRight (x:xs) start size = if start > (size -1)
                          then []
                          else (getSemiDiag x start size) : (semiRight xs (start+1) size)

盡管我已經盡力了,功能semiRight還是無法匹配。 有什么想法嗎?

僅根據類型判斷, x會匹配具有[Maybe Player]類型的元素,

您顯然應該將[x]而不是x傳遞給getSemiDiag。 此外,有些括號是多余的。

semiRight :: [[Maybe Player]] -> Int -> Int -> [[Maybe Player]]
semiRight [] _ _ = []
semiRight (x:xs) start size = if start > (size -1)
                          then []
                          else getSemiDiag [x] start size : semiRight xs (start+1) size

為什么不只使用zipWith

semiRight players start size = zipWith (\p i -> [p !! i]) players [start .. size]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM