我解析命令行参数以确定我希望程序返回哪个值
但如果我没有提供任何值,我想在列表中添加一堆默认值。
有点像Python xs = parsed_list or [1,2,3]
答案 0 :(得分:2)
使用警卫:
xs | null parsed_list = [1,2,3]
| otherwise = parser_list
使用if
:(如@Mephy建议的那样)
xs = if null parsed_list then [1,2,3] else parsed_list
使用模式匹配:(参见@ jtobin的回答)
使用foldr
(不推荐):
xs = foldr (\_ _ -> parsed_list) [1,2,3] parsed_list
使用自定义运算符:
ifEmpty :: [a] -> [a] -> [a]
ifEmpty [] def = def
ifEmpty ys _ = ys
xs = parsed_list `ifEmpty` [1,2,3]
答案 1 :(得分:1)
只需检查并查看解析后的参数列表是否为空,如果是,则提供默认值。例如:
import System.Environment
defaults = undefined
foo = do
args <- getArgs
return $ case args of
[] -> defaults
xs -> xs