0
我正在嘗試在Haskell中編寫一個函數,該函數在第n個元素之後的位置將列表拆分爲兩個。Haskell split使用Error Handler的函數
我有下面的代碼至今:
data Err e = Bad|Good e
splitAt:: Int -> [a] -> Err(([a],[a]))
splitAt 0 zs = Good(([], zs))
splitAt n _ = Bad
我不知道如何運用錯誤信息給下面的情況:
splitAt n (z:zs) | n > 0 = (z:zs', zs'') where (zs', zs'') = split (n-1) zs
的功能也應該返回錯誤信息「壞「,如果該數字大於列表的長度,或者數字是負數。例如
splitAt 6 [1,2,3,] = Bad
splitAt (-3) [1,2,3] = Bad
任何意見將不勝感激。
爲什麼使用'Err'?這就是「可能」的用途,如果你使用它,你有一個完整的圖書館來幫助你。 – Carcigenicate
我是Haskell的新手,希望練習使用多態類型 – NoahSM1993
哦,好的。只要知道你的Err類型是Haskell的Maybe的最小版本。在「真實代碼」中選擇使用Maybe來代替。 – Carcigenicate