View CEs.fsx
let log p = printfn "expression is %A" p
let loggedWorkflow =
let x = 42
log x
let y = 43
log y
let z = x + y // block following let is unfinished. Every expression must return something.
log z
//return
z
View LongAsyncTask
let now () = System.DateTime.Now
let someOtherWork times = async {
let rec inner' times current = async {
if times = current then
printfn "someOtherWork FINISHED"
else
do! Async.Sleep 1000
let next = current + 1
printfn "someOtherWork step %d @ %s" next (now() |> string)
View FirebaseFableFindings.fs
// ts2fable 0.5.2
module rec Firebase
open System
open Fable.Core
open Fable.Import.JS
type [<AllowNullLiteral>] IExports =
abstract EmailAuthProvider: EmailAuthProviderStatic
abstract EmailAuthProvider_Instance: EmailAuthProvider_InstanceStatic
View understandingApply.fsx
(*
I think I understand apply!
Apply is a function that takes an elevated multi parameter functions and partially applies it for you.
*)
//For example:
// usage: printfn "%s" <| sayGood "morning" "Clément"
let sayGood = sprintf "Good %s %s" // string -> string -> string
View resultMonad.fsx
type Result<'a> =
| Success of 'a
| Failure of string
let parseInt x =
try
System.Int32.Parse(x) |> Success
with ex -> ex.Message |> Failure
parseInt "hello"
View SuaveLoggingExample
module SuaveLogging.SuaveExample
open System
open System.IO
open System.Net
open Suave
open Suave.Filters
open Suave.Successful
open Suave.Logging
View FSharpAdvancedTopics.fsx
open System
open System.Net
open Microsoft.FSharp.Control.WebExtensions
// *********************************
// Pipes vs. Composition
// *********************************
// Pipe operator
let sum =
View FindDupsRec.fs
let findDuplicateLetter list =
let rec findDuplicate list item =
match list with
| [] -> "No duplicates were found"
| x::xs when item = x -> x
| x::xs -> findDuplicate xs x
findDuplicate (List.sort list) ""
[<EntryPoint>]
let main argv =
View WubWub.fs
open System
let getLyrics (input : string) (matchString : string) =
input.Split([|matchString|], StringSplitOptions.RemoveEmptyEntries)
|> Array.reduce (fun acc item -> sprintf "%s %s" acc item)
[<EntryPoint>]
let main argv =
printfn "%A" (getLyrics "WUBWUBWUBIWUBAMWUBWUBXWUBWUBWUB" "WUB")
0 // return an integer exit code
View ItsFunctionalBro
open System.Text.RegularExpressions;
let buildList args =
Regex.Matches(args, "(\d\,\s?\d)")
|> Seq.cast<Match>
|> Seq.map (fun m -> m.Value.Replace(" ", "").Split([|','|]))
|> Seq.toList
let findDuplicatePointer list =
let rec findCycleRec (oldList:list<array<string>>) (newList:list<array<string>>) =