如何写返回Haskell

Rn2*_*2dy 5 syntax haskell

我希望我的showStackHead函数采用堆栈打印头并返回休止符,这是我的代码--code

showStackHead xx
               | xx == []   = return []
               | otherwise  = do putStrLn("result:" ++ (head xx))
                              return (tail xx)
Run Code Online (Sandbox Code Playgroud)

当我运行这段代码时,编译器告诉我第二次返回有一个解析错误,那么编写这个函数的正确方法是什么?

Don*_*art 15

将'return'缩进到与'putStrLn'相同的深度,如下所示:

showStackHead xs
   | xs == []   = return []
   | otherwise  = do putStrLn ("result:" ++ (head xs))
                     return (tail xs)
Run Code Online (Sandbox Code Playgroud)

  • 阅读Haskell 98教程中的"布局" (3认同)