0 people like it.
Like the snippet!
Euler 1 as a Computation Expression
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
type Euler1Builder() =
member b.Combine(x, y) = x + y
member b.Zero() = 0
member b.Yield(x) = if x % 5 = 0 || x % 3 = 0 then x else 0
member b.For(vals, f) = vals |> Seq.fold (fun s n -> b.Combine(s, f n)) (b.Zero())
let eb = new Euler1Builder()
let pe1_eb limit = eb { for x = 0 to limit - 1 do yield x }
|
Multiple items
type Euler1Builder =
new : unit -> Euler1Builder
member Combine : x:int * y:int -> int
member For : vals:seq<'a> * f:('a -> int) -> int
member Yield : x:int -> int
member Zero : unit -> int
Full name: Script.Euler1Builder
--------------------
new : unit -> Euler1Builder
val b : Euler1Builder
member Euler1Builder.Combine : x:int * y:int -> int
Full name: Script.Euler1Builder.Combine
val x : int
val y : int
member Euler1Builder.Zero : unit -> int
Full name: Script.Euler1Builder.Zero
member Euler1Builder.Yield : x:int -> int
Full name: Script.Euler1Builder.Yield
member Euler1Builder.For : vals:seq<'a> * f:('a -> int) -> int
Full name: Script.Euler1Builder.For
val vals : seq<'a>
val f : ('a -> int)
module Seq
from Microsoft.FSharp.Collections
val fold : folder:('State -> 'T -> 'State) -> state:'State -> source:seq<'T> -> 'State
Full name: Microsoft.FSharp.Collections.Seq.fold
val s : int
val n : 'a
member Euler1Builder.Combine : x:int * y:int -> int
member Euler1Builder.Zero : unit -> int
val eb : Euler1Builder
Full name: Script.eb
val pe1_eb : limit:int -> int
Full name: Script.pe1_eb
val limit : int
More information