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