Swap even/odd characters I wrote some code to solve this problem https://www.hackerrank.com/challenges/string-o-permute which basically states: take an even length string and swap all the even indexed characters. For example the string "abcd" should become "badc". I'm looking for a general code review as I'm very new to F# and specifically I'd really like to get rid of the ignoredTupleValue variable, it seems like a kludge to me. I'd also like to collapse the whole thing into one function but I was running into scoping issues with the StringBuilder.

open System
open System.Text

[&lt;EntryPoint&gt;]
let main argv =
    let numCases = Console.ReadLine() |&gt; int
    for i = numCases downto 1 do
        let strIn = Console.ReadLine()
        let pairs = Seq.pairwise strIn
        let ignoredTupleValue = ('1', '1')
        let swappedTuples = pairs |&gt; Seq.mapi (fun idx pair -&gt;
                                if idx % 2 = 0 then
                                    let (a, b) = pair
                                    (b, a)
                                else
                                    ignoredTupleValue)
        let answer = Seq.fold (fun (sb : StringBuilder) pair -&gt;
                                if pair &lt;&gt; ignoredTupleValue then
                                    let (a, b) = pair
                                    sb.Append(a) |&gt; ignore
                                    sb.Append(b) |&gt; ignore
                                sb)
                                (new StringBuilder())
                                swappedTuples
        printfn "%s" (answer.ToString())
    0
The solution should look like (pseudocode, I know little F# too ;) ):

String
  |&gt; ChunksOf 2
  |&gt; Map Reverse
  |&gt; Flatten


An example explains clearly

"abcd" -&gt; ["ab", "cd"] -&gt; ["ba", "dc"] -&gt; "badc"


The key of effective Functional Programming is making good use of the built-in functions and carefully combining them.