3 people like it.
Like the snippet!
Tree using sequences
Tree implementation using sequences.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
|
type 'a Tree = Node of 'a * seq<'a Tree> * seq<'a Tree>
let addL a t =
match t with
| Node (v,l,r) -> Node (v,seq {yield! l; yield a},r)
let addR a t =
match t with
| Node (v,l,r) -> Node (v,l,seq {yield! r; yield a})
let removeL a t =
match t with
| Node (v,l,r) -> Node (v,Seq.filter (fun i -> i = a) l ,r)
let removeR a t =
match t with
| Node (v,l,r) -> Node (v,l , Seq.filter (fun i -> i = a) r)
let newTree v = Node (v,Seq.empty,Seq.empty)
let tree = newTree 1 |> addL (newTree 2) |> addR (newTree 3)
|
union case Tree.Node: 'a * seq<'a Tree> * seq<'a Tree> -> 'a Tree
Multiple items
val seq : sequence:seq<'T> -> seq<'T>
Full name: Microsoft.FSharp.Core.Operators.seq
--------------------
type seq<'T> = System.Collections.Generic.IEnumerable<'T>
Full name: Microsoft.FSharp.Collections.seq<_>
type 'a Tree = | Node of 'a * seq<'a Tree> * seq<'a Tree>
Full name: Script.Tree<_>
val addL : a:'a Tree -> t:'a Tree -> 'a Tree
Full name: Script.addL
val a : 'a Tree
val t : 'a Tree
val v : 'a
val l : seq<'a Tree>
val r : seq<'a Tree>
val addR : a:'a Tree -> t:'a Tree -> 'a Tree
Full name: Script.addR
val removeL : a:'a Tree -> t:'a Tree -> 'a Tree (requires equality)
Full name: Script.removeL
val a : 'a Tree (requires equality)
val t : 'a Tree (requires equality)
val v : 'a (requires equality)
val l : seq<'a Tree> (requires equality)
val r : seq<'a Tree> (requires equality)
module Seq
from Microsoft.FSharp.Collections
val filter : predicate:('T -> bool) -> source:seq<'T> -> seq<'T>
Full name: Microsoft.FSharp.Collections.Seq.filter
val i : 'a Tree (requires equality)
val removeR : a:'a Tree -> t:'a Tree -> 'a Tree (requires equality)
Full name: Script.removeR
val newTree : v:'a -> 'a Tree
Full name: Script.newTree
val empty<'T> : seq<'T>
Full name: Microsoft.FSharp.Collections.Seq.empty
val tree : int Tree
Full name: Script.tree
More information