如何以可以转换 ["a";"b";"c";"a";"d";"e" 的方式在 F# 中使用模式匹配] 变成 ["a b c a";"d";"e"]

How to use pattern matching in F# in a way that i can convert ["a";"b";"c";"a";"d";"e"] into ["a b c a";"d";"e"]

我有一个像 ["a";"b";"c";"a","d","e"] 这样的字符串列表,我想知道如何使字符串列表像 ["a b c a";"d";"e"] y 尝试模式匹配,但我遇到了太多问题:

  let rec modifyString lista  =
  match lista with
  |[] -> []
  //try to get the place where my string start  
  |head::tail when head = "a" ->
    let tryHard = helperString tail
    tryHard
// try to pass a list that is not with 'a'    
  |primero::segundo ->
        [primero] :: modifyString segundo

  // Try to get de tail list that i know is after "a" 
  let rec helperString lista =
   match lista with
   |[] -> []
   |head::tail when tail.Head <> string '"' ->
     let aux = head + " "
     let aux2 = head :: helperString tail
     aux2

现在我几乎已经解决了这个问题,现在的问题是,当给出这样的东西时 [a b c d e " e f g " h i j](认为是一个字符串列表,其中每个元素都是一个字符串)输出是 ["a" ;"b";"c";"d";"ef"; "g";""";"h";"i";"j"][] 代码是下一个:

let rec helperString lista =
  match lista with
  |head::tail when tail.Head = string '"' ->
    head + tail.Head::tail.Tail
  |head::tail when tail.Head <> string '"' ->
    let aux = helperString tail
    head + tail.Head :: tail.Tail

let rec modifyString listab  =
  match listab with
  |[] -> []
  |head::tail when tail.Head <> string '"' ->
    head :: modifyString tail
  |head::tail when tail.Head = string '"' ->
      helperString tail.Tail

我终于在代码的最后一次更新中知道如何完成这个任务使用 var aux 。

let rec helperString lista =
  match lista with
  |head::tail when tail.Head = string '"' ->
    head + tail.Head::tail.Tail
  |head::tail when tail.Head <> string '"' ->
    let aux = helperString tail
    head + aux.Head :: aux.Tail

let rec modifyString listab  =
  match listab with
  |[] -> []
  |head::tail when tail.Head <> string '"' ->
    head :: modifyString tail
  |head::tail when tail.Head = string '"' ->
      helperString tail.Tail