From 0f989ec1538c6d1cc9265496c429a851da86a1cb Mon Sep 17 00:00:00 2001 From: Tuomas Hietanen Date: Sun, 7 Jul 2024 21:59:06 +0100 Subject: [PATCH] yields are needed for tail-recursion? --- src/FSharp.Data.Csv.Core/CsvRuntime.fs | 17 +++++++-------- .../NameUtils.fs | 21 ++++++------------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/FSharp.Data.Csv.Core/CsvRuntime.fs b/src/FSharp.Data.Csv.Core/CsvRuntime.fs index e3f9ff556..cce4072da 100644 --- a/src/FSharp.Data.Csv.Core/CsvRuntime.fs +++ b/src/FSharp.Data.Csv.Core/CsvRuntime.fs @@ -69,17 +69,14 @@ module internal CsvReader = | Char '\r' | Char '\n' -> readLines lineNumber | current -> - let r1 = - readLine [] (StringBuilder()) current - |> List.rev - |> Array.ofList, - lineNumber - - let r2 = readLines (lineNumber + 1) - seq { - yield r1 - yield! r2 + yield + readLine [] (StringBuilder()) current + |> List.rev + |> Array.ofList, + lineNumber + + yield! readLines (lineNumber + 1) } readLines 0 diff --git a/src/FSharp.Data.Runtime.Utilities/NameUtils.fs b/src/FSharp.Data.Runtime.Utilities/NameUtils.fs index 96cd5236b..724684aa1 100644 --- a/src/FSharp.Data.Runtime.Utilities/NameUtils.fs +++ b/src/FSharp.Data.Runtime.Utilities/NameUtils.fs @@ -52,12 +52,9 @@ let nicePascalName (s: string) = | Upper _ -> consume from true (i + 1) | Lower _ -> consume from false (i + 1) | _ -> - let r1 = struct (from, i) - let r2 = restart (i + 1) - seq { - yield r1 - yield! r2 + yield struct (from, i) + yield! restart (i + 1) } // Consume are letters of the same kind (either all lower or all upper) and consume from takeUpper i = @@ -65,20 +62,14 @@ let nicePascalName (s: string) = | false, Lower _ -> consume from takeUpper (i + 1) | true, Upper _ -> consume from takeUpper (i + 1) | true, Lower _ -> - let r1 = struct (from, (i - 1)) - let r2 = restart (i - 1) - seq { - yield r1 - yield! r2 + yield struct (from, (i - 1)) + yield! restart (i - 1) } | _ -> - let r1 = struct (from, i) - let r2 = restart i - seq { - yield r1 - yield! r2 + yield struct (from, i) + yield! restart i } // Split string into segments and turn them to PascalCase