List Haskell列表到元组
我正在编写一个函数,List Haskell列表到元组,list,parsing,haskell,tuples,List,Parsing,Haskell,Tuples,我正在编写一个函数,parseArgs,它将以列表的形式接收命令行参数。如果列表的大小为2,则函数将解析列表的内容并将其转换为元组,否则返回Nothing。我不知道该怎么做;到目前为止,我的代码如下: parseArgs :: [String] -> Maybe (String, Maybe String) parseArgs [x, y] | length [x, y] < 2 = Nothing | length [x, y] > 2 = Nothing | o
parseArgs
,它将以列表的形式接收命令行参数。如果列表的大小为2,则函数将解析列表的内容并将其转换为元组,否则返回Nothing
。我不知道该怎么做;到目前为止,我的代码如下:
parseArgs :: [String] -> Maybe (String, Maybe String)
parseArgs [x, y]
| length [x, y] < 2 = Nothing
| length [x, y] > 2 = Nothing
| otherwise = Just (x, Just y)
parseArgs::[String]->Maybe(String,Maybe String)
parseArgs[x,y]
|长度[x,y]<2=无
|长度[x,y]>2=无
|否则=仅(x,仅y)
在您的代码中,
parseArgs[x,y]
意味着它只接受两个元素的列表。
所以
长度[x,y]
永远是2,那些(>2)(@johny Liao)比我快,但我的答案是类似的:
根据您的要求,我不清楚为什么第二个元组元素是可能是String
。因此,我将继续处理,就像您的函数类型是:parseArgs::[String]->可能(String,String)
parseArgs :: [String] -> Maybe (String, String)
parseArgs x:y:[] = Just (x,y)
parseArgs xs = Nothing
parseArgs :: [String] -> Maybe (String, String)
parseArgs [x, xx] = Just (x, xx) -- pattern match on the list of two elements
parseArgs _ = Nothing -- discard _everything_ else
print $ parseArgs ["hi", "bye"] -- Just ("hi", "bye")
print $ parseArgs ["hi"] -- Nothing