Skip to content

Instantly share code, notes, and snippets.

View vgaltes's full-sized avatar

Vicenç García Altés vgaltes

View GitHub Profile
@vgaltes
vgaltes / gist:2aa85a0ef5e92d4dfd97
Created May 10, 2015 14:15
FSharp Pattern Matching - Using the recognizer
let fizzBuzz =
function
| Fizz -> "Fizz"
| Buzz -> "Buzz"
| FizzBuzz -> "FizzBuzz"
| Other n -> n.ToString()
@vgaltes
vgaltes / gist:ac693fc6a81885d7eed8
Last active August 29, 2015 14:20
FSharp Pattern Matching - Active recognizer
let (|Fizz|Buzz|FizzBuzz|Other|) input =
match (input % 3, input % 5) with
| 0,0 -> FizzBuzz
| 0,_ -> Fizz
| _,0 -> Buzz
| _,_ -> Other input
@vgaltes
vgaltes / gist:ea700e4c7f2334223d0a
Created May 10, 2015 13:47
FSharp Pattern Matching
let (|Even|Odd|) input = if input % 2 = 0 then Even else Odd
let TestNumber input =
match input with
| Even -> printfn "%d is even" input
| Odd -> printfn "%d is odd" input
@vgaltes
vgaltes / gist:c9b2b5cd166c2babcf31
Created May 4, 2015 14:25
FSharp Bank kata - global operator
let (|>>) result f =
match result with
| Success(value) -> f value
| Failure(error) -> Failure(error)
@vgaltes
vgaltes / gist:eea502a4bc3b2ce9475a
Created May 4, 2015 14:18
FSharp Bank Kata - pattern matching
let withdraw amount currency {Amount = (oldAmount, _)} =
match oldAmount - amount with
| newAmount when newAmount < 0 -> Failure("This bank account cannot be overdrawn.")
| newAmount -> Success {Amount = (oldAmount - amount, USD)}
@vgaltes
vgaltes / gist:7297d59862b4007c980e
Created May 4, 2015 14:09
FSharp Bank kata - deposit
let deposit amount currency {Amount = (oldAmount, _)} =
{Amount = (oldAmount + amount, USD)}
@vgaltes
vgaltes / gist:ee0e0e0260b4cecd53b1
Created May 4, 2015 13:58
FSharp Bank kata - a simple record type
type Point = { x : float; y: float; z: float; }
@vgaltes
vgaltes / gist:5da2202b0dfd5e833a2c
Created May 4, 2015 13:51
FSharp Bank Kata - Get Option value
let printValue opt =
match opt with
| Some x -> printfn "%A" x
| None -> printfn "No value."
@vgaltes
vgaltes / gist:d1dda90150ff380166ac
Created May 4, 2015 13:49
FSharp Bank kata - Using Option
let myOption1 = Some(10.0)
let myOption2 = Some("string")
let myOption3 = None
@vgaltes
vgaltes / gist:ad0eaab4d86ce2677b86
Created May 4, 2015 13:39
FSharp Bank Kata - Option type
type Option<'a> =
| Some of 'a
| None