mirror of
https://github.com/Smaug123/FicroKanSharp
synced 2025-10-22 03:08:40 +00:00
Add a specific type for names (#2)
This commit is contained in:
@@ -1,2 +1 @@
|
|||||||
module FicroKanSharp.Test.TestTypedMatch
|
module FicroKanSharp.Test.TestTypedMatch
|
||||||
|
|
||||||
|
@@ -7,6 +7,15 @@ type TypedTerm<'a> =
|
|||||||
| Term of Term
|
| Term of Term
|
||||||
| Literal of 'a
|
| Literal of 'a
|
||||||
|
|
||||||
|
type internal TypeName<'a> =
|
||||||
|
{
|
||||||
|
UserType : Type
|
||||||
|
FieldValue : 'a
|
||||||
|
}
|
||||||
|
|
||||||
|
override this.ToString () =
|
||||||
|
sprintf "%O<%s>" this.FieldValue this.UserType.Name
|
||||||
|
|
||||||
[<RequireQualifiedAccess>]
|
[<RequireQualifiedAccess>]
|
||||||
module TypedTerm =
|
module TypedTerm =
|
||||||
|
|
||||||
@@ -40,9 +49,15 @@ module TypedTerm =
|
|||||||
let valuesU = toTermList valuesU
|
let valuesU = toTermList valuesU
|
||||||
let td = typedefof<'a>
|
let td = typedefof<'a>
|
||||||
|
|
||||||
Term.Symbol ((td, fieldU.Name), valuesU)
|
Term.Symbol (
|
||||||
|
{
|
||||||
|
UserType = td
|
||||||
|
FieldValue = fieldU.Name
|
||||||
|
},
|
||||||
|
valuesU
|
||||||
|
)
|
||||||
else
|
else
|
||||||
Term.Symbol ((ty, t), [])
|
Term.Symbol ({ UserType = ty ; FieldValue = t }, [])
|
||||||
|
|
||||||
and private ofLiteral : Type -> obj -> Term =
|
and private ofLiteral : Type -> obj -> Term =
|
||||||
let m =
|
let m =
|
||||||
|
Reference in New Issue
Block a user