1

似乎無法在Haskell中正確排列(縮進)此代碼。 四處錯誤:Haskell解析錯誤輸入'<''

parse error on input `<-' 

人那個地方的錯誤是:

evalListSplitAt n stratPref stratSuff [] = return [] 
evalListSplitAt n stratPref stratSuff xs = do ys` <- stratPref ys 
               zs` <- stratSuff zs 
              return (ys` ++ zs`) 
              where (ys,zs) = splitAt n xs 

乾杯。

回答

9

您需要同等縮進do塊中的每一行。此外,確保使用'作爲變量名稱而不是`。 (也就是說,使用撇號而不是反引號,反引號用於實現函數中綴,所以它們不能用作變量名的一部分,所以你可以使用撇號命名「x prime」:x')。代碼應該看起來像這樣:

evalListSplitAt n stratPref stratSuff [] = return [] 
evalListSplitAt n stratPref stratSuff xs = do ys' <- stratPref ys 
               zs' <- stratSuff zs 
               return (ys' ++ zs') 
             where (ys,zs) = splitAt n xs