如何编写返回Haskell
我希望我的showStackHead函数获取一个堆栈打印头部并返回其余部分,这是我的代码 --代码如何编写返回Haskell,haskell,syntax,Haskell,Syntax,我希望我的showStackHead函数获取一个堆栈打印头部并返回其余部分,这是我的代码 --代码 当我运行这段代码时,编译器告诉我第二个返回有一个解析错误,那么编写此函数的正确方法是什么?将“返回”缩进到与“putStrLn”相同的深度,如下所示: showStackHead xs | xs == [] = return [] | otherwise = do putStrLn ("result:" ++ (head xs)) ret
当我运行这段代码时,编译器告诉我第二个返回有一个解析错误,那么编写此函数的正确方法是什么?将“返回”缩进到与“putStrLn”相同的深度,如下所示:
showStackHead xs
| xs == [] = return []
| otherwise = do putStrLn ("result:" ++ (head xs))
return (tail xs)
另外,通过使用模式匹配,您的showStackHead可能会更干净。允许您放弃头部和尾部的防护比较:
#! /usr/bin/env runhaskell
showStackHead [] = return []
showStackHead (x:xs) = do
putStrLn $ "result: " ++ [x]
return xs
main :: IO ()
main = do
let s1 = []
r1 <- showStackHead s1
putStrLn $ "returned: " ++ r1
putStrLn "---"
let s2 = "foo"
r2 <- showStackHead s2
putStrLn $ "returned: " ++ r2
putStrLn "---"
let s3 = "q"
r3 <- showStackHead s3
putStrLn $ "returned: " ++ r3
#/usr/bin/env runhaskell
showStackHead[]=返回[]
showStackHead(x:xs)=do
putStrLn$“结果:”++[x]
返回xs
main::IO()
main=do
设s1=[]
r1
#! /usr/bin/env runhaskell
showStackHead [] = return []
showStackHead (x:xs) = do
putStrLn $ "result: " ++ [x]
return xs
main :: IO ()
main = do
let s1 = []
r1 <- showStackHead s1
putStrLn $ "returned: " ++ r1
putStrLn "---"
let s2 = "foo"
r2 <- showStackHead s2
putStrLn $ "returned: " ++ r2
putStrLn "---"
let s3 = "q"
r3 <- showStackHead s3
putStrLn $ "returned: " ++ r3