sen*_*nel 0 haskell parse-error
以下代码:
import IO
import System(getArgs)
main = do
args <- getArgs
let l = length args
if l == 0
putStrLn "foo"
else
putStrLn "bar"
Run Code Online (Sandbox Code Playgroud)
为if-else子句生成解析错误.我尝试使用花括号无济于事.救命!
只是为了证明我对Mark的答案的评论,
import System.Environment (getArgs)
main :: IO ()
main = do
args <- getArgs
let l = length args
if l == 0
then putStrLn "foo"
else putStrLn "bar"
Run Code Online (Sandbox Code Playgroud)
是合法的Haskell.
随着GHC 7.0的{-# LANGUAGE RebindableSyntax #-}扩展,你甚至可以逃脱
class IfThenElse a b c d | a b c -> d where
ifThenElse :: a -> b -> c -> d
instance IfThenElse Bool a a a where
ifThenElse True = const
ifThenElse False = flip const
instance (Monad m, IfThenElse a (m b) (m b) (m b))
=> IfThenElse (m a) (m b) (m b) (m b) where
ifThenElse = liftM ifThenElse
main =
if liftM null getArgs
then putStrLn "foo"
else putStrLn "bar"
Run Code Online (Sandbox Code Playgroud)
(从blog.n-sch.de无耻地勉强.)