Fix it up

This commit is contained in:
Smaug123
2020-05-02 13:33:40 +01:00
parent d8769e5d9a
commit 6a62871778
2 changed files with 10 additions and 8 deletions

View File

@@ -48,8 +48,8 @@ module TestVector =
twice twice
|> Vector.cast |> Vector.cast
|> Vector.cast<S<S<_>>, _, _> |> Vector.cast
|> Vector.cast<S<S<S<S<_>>>>, _, _> |> Vector.cast
|> Vector.cast |> Vector.cast
|> shouldEqual otherTwice |> shouldEqual otherTwice

View File

@@ -3,21 +3,22 @@
type Z = type Z =
private private
| Z | Z
static member computed (a : Z) : Z = a static member computed (_ : Z) : unit = ()
type S<'a> = type S<'a> =
private private
| S | S
static member inline refine< ^n1, ^n2 when (^n1 or ^n2) : (static member refine : ^n1 -> ^n2)> (_ : S<'n1>) : S<'n2> = Unchecked.defaultof<_> static member inline refine< ^n1, ^n2 when ^n1 : (static member refine : ^n1 -> ^n2)> (_ : S<'n1>) : S<'n2> = Unchecked.defaultof<_>
static member inline computed< ^n1 when ^n1 : (static member computed : ^n1 -> ^n1)> (_ : S<'n1>) : S<'n1> = Unchecked.defaultof<_> static member inline computed< ^n1 when ^n1 : (static member computed : ^n1 -> unit)> (_ : S<'n1>) : unit = ()
type Add<'a, 'b> = type Add<'a, 'b> =
private private
| Add | Add
static member inline refine (_ : Add< Z, Z>) : Z = Unchecked.defaultof<_> static member inline refine (_ : Add<Z, Z>) : Z = Unchecked.defaultof<_>
static member inline refine< ^n1, ^n2> (_ : Add< S< ^n1>, S< ^n2>>) : S<S<Add< ^n1, ^n2>>> = Unchecked.defaultof<_> static member inline refine< ^n1, ^n2> (_ : Add< S< ^n1>, S< ^n2>>) : S<S<Add< ^n1, ^n2>>> = Unchecked.defaultof<_>
static member inline refine< ^n1, ^n2 when (^n1 or ^n2) : (static member refine : ^n1 -> ^n2) and ^n1 : (static member computed : ^n1 -> ^n2)> (_ : Add< Z, ^n1>) : ^n2 = Unchecked.defaultof<_> //static member inline refine< ^n1, ^n2 when (^n1 or ^n2) : (static member refine : ^n1 -> ^n2)> (_ : Add< Z, ^n1>) : ^n2 = Unchecked.defaultof<_>
static member inline refine< ^n1, ^n2 when (^n1 or ^n2) : (static member refine : ^n1 -> ^n2) and ^n1 : (static member computed : ^n1 -> ^n2)> (_ : Add< ^n1, Z>) : ^n2 = Unchecked.defaultof<_> static member inline refine< ^n1, ^n2> (_ : Add< Z, ^n1>) : ^n2 = Unchecked.defaultof<_>
static member inline refine< ^n1, ^n2 > (_ : Add< ^n1, Z>) : ^n2 = Unchecked.defaultof<_>
type Vector<'a, 'len> = type Vector<'a, 'len> =
{ {
@@ -79,6 +80,7 @@ module Vector =
let unsafeCast<'a, 'n, 'm> (a : Vector<'a, 'n>) : Vector<'a, 'm> = { Elements = a.Elements } let unsafeCast<'a, 'n, 'm> (a : Vector<'a, 'n>) : Vector<'a, 'm> = { Elements = a.Elements }
let inline cast< ^n2, ^n1, 'a when (^n1 or ^n2) : (static member refine : ^n1 -> ^n2)> (a : Vector<'a, ^n1>) : Vector<'a, ^n2> = unsafeCast a let inline cast< ^n2, ^n1, 'a when (^n1 or ^n2) : (static member refine : ^n1 -> ^n2)> (a : Vector<'a, ^n1>) : Vector<'a, ^n2> = unsafeCast a
let inline cast'< ^n1, ^n2, 'a when (^n1 or ^n2) : (static member refine : ^n1 -> ^n2)> (a : Vector<'a, ^n1>) : Vector<'a, ^n2> = unsafeCast a
[<AutoOpen>] [<AutoOpen>]
module Patterns = module Patterns =