Просто, чтобы продемонстрировать свой комментарий к ответу Марка,
import System.Environment (getArgs)
main :: IO()
main = do
args <- getArgs
let l = length args
if l == 0
then putStrLn "foo"
else putStrLn "bar"
является законным Haskell.
С {-# LANGUAGE RebindableSyntax #-}
расширением GHC 7.0, вы можете даже уйти с
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"
(Бесстыдно подражают от blog.n-sch.de.)
Благодаря кучу! – sentinel 2010-12-01 02:32:39