This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#r "nuget: FSToolkit.ErrorHandling.TaskResult" | |
#r "nuget: FSharp.Json" | |
#r "nuget: Microsoft.Azure.Cosmos" | |
open System | |
open System.Text.RegularExpressions | |
open FsToolkit.ErrorHandling | |
open FSharp.Json | |
// Primitives |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module SpreadSheet | |
// Build your own Excel 365 in an hour with F# by Tomas Petricek! | |
// Watch the video of the talk here: https://www.youtube.com/watch?v=Bnm71YEt_lI | |
module Parsec = | |
type ParseStream<'T> = int * list<'T> | |
type Parser<'T, 'R> = Parser of (ParseStream<'T> -> option<ParseStream<'T> * 'R>) | |
/// Returned by the `slot` function to create a parser slot that is filled later |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module SpreadSheet | |
// Build your own Excel 365 in an hour with F# by Tomas Petricek! | |
// Watch the video of the talk here: https://www.youtube.com/watch?v=Bnm71YEt_lI | |
module Parsec = | |
type ParseStream<'T> = int * list<'T> | |
type Parser<'T, 'R> = Parser of (ParseStream<'T> -> option<ParseStream<'T> * 'R>) | |
/// Returned by the `slot` function to create a parser slot that is filled later |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module SpreadSheet | |
// Build your own Excel 365 in an hour with F# by Tomas Petricek! | |
// Watch the video of the talk here: https://www.youtube.com/watch?v=Bnm71YEt_lI | |
module Parsec = | |
type ParseStream<'T> = int * list<'T> | |
type Parser<'T, 'R> = Parser of (ParseStream<'T> -> option<ParseStream<'T> * 'R>) | |
/// Returned by the `slot` function to create a parser slot that is filled later |