0 people like it.
Like the snippet!
Monad Bind 4 of 3
1:
2:
3:
|
let f (noWeeks: A): B = float (7 * noWeeks)
let g (noDays: B): C = today.AddDays noDays
let h (date: C): D = date.ToShortDateString ()
|
1:
2:
3:
4:
5:
6:
7:
8:
|
/// Plain old pipe operator
let pipe1 x f = f x
/// Special purpose pipe operator
let pipe2 (x, s) f =
let fx= f x
let msg = sprintf "fun(%s)=%A" s fx
fx, msg
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
// My input parameters
let x0 = myInputParam
let msg0 = sprintf "%A" x0
/// Example result (plain)
let result1 =
pipe1 (pipe1 (pipe1 x0 f) g) h
/// Example result (as tuple)
let result2, msg2 =
pipe2 (pipe2 (pipe2 (x0, msg0) f) g) h
|
val f : noWeeks:A -> B
Full name: Script.f
val noWeeks : A
type A = int
Full name: Script.A
type B = float
Full name: Script.B
Multiple items
val float : value:'T -> float (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.float
--------------------
type float = Double
Full name: Microsoft.FSharp.Core.float
--------------------
type float<'Measure> = float
Full name: Microsoft.FSharp.Core.float<_>
val g : noDays:B -> C
Full name: Script.g
val noDays : B
type C = DateTime
Full name: Script.C
val today : DateTime
Full name: Script.today
Today's date and time for use in examples below.
DateTime.AddDays(value: float) : DateTime
val h : date:C -> D
Full name: Script.h
val date : C
type D = string
Full name: Script.D
DateTime.ToShortDateString() : string
val pipe1 : x:'a -> f:('a -> 'b) -> 'b
Full name: Script.pipe1
Plain old pipe operator
val x : 'a
val f : ('a -> 'b)
val pipe2 : x:'a * s:string -> f:('a -> 'b) -> 'b * string
Full name: Script.pipe2
Special purpose pipe operator
val s : string
val fx : 'b
val msg : string
val sprintf : format:Printf.StringFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.sprintf
val x0 : int
Full name: Script.x0
val myInputParam : int
Full name: Script.myInputParam
The test parameter I will use is "2" as in "two weeks from now".
val msg0 : string
Full name: Script.msg0
val result1 : D
Full name: Script.result1
Example result (plain)
val result2 : D
Full name: Script.result2
Example result (as tuple)
val msg2 : string
Full name: Script.msg2
Example result (as tuple)
More information