open System.IO
open System.Linq
-// For dynmic typing. To print anything in our case.
-let inline print a = printfn "%A" a
-
// Write something on a file.
let appendFile (filename: string) (text: string) =
use sw = new StreamWriter(filename, true)
yield NumCard(n, suit)
]
-// Records.
-type Person = { First: string; Last: string; Age: int }
+// Records with custom equality.
+[<CustomEquality; NoComparison>]
+type Person =
+ { First: string; Last: string; Age: int }
+ override this.Equals(other) =
+ match other with
+ | :? Person as p -> p.First = this.First && p.Last = this.Last
+ | _ -> false
+ override this.GetHashCode() =
+ this.First.GetHashCode() ^^^ this.Last.GetHashCode()
+
let steve = { First = "Steve"; Last = "Holt"; Age = 17 }
-let steves'twin = { steve with First = "Paul" }
+let stevesTwin = { steve with First = "Paul" }
// Queries. Should be used with SQL or other external data sources.
let youngPersonNames persons =
open System.Linq
open Functional
+// For dynamic typing. To print anything in our case.
+let inline print a = printfn "%A" a
+
[<EntryPoint>]
let main args =
appendFile "test.txt" "Pouet"
print (isEven (fac 4))
//
print steve.First
+ printfn "Person equality: %A" ({ First = "Steve"; Last = "Holt"; Age = 42 } = steve)
printfn "Young persons: "
- (youngPersonNames (Queryable.AsQueryable [steve ; steves'twin ; { First = "Paul"; Last = "Atreides"; Age = 11 }])) |> Seq.iter (fun name -> printfn " name: %s" name)
+ (youngPersonNames (Queryable.AsQueryable [steve ; stevesTwin ; { First = "Paul"; Last = "Atreides"; Age = 11 }])) |> Seq.iter (fun name -> printfn " name: %s" name)
//
print <| Seq.take 10 allPositiveInts
print <| Seq.take 10 (fibs 1 1)