相关疑难解决方法(0)

F#类型提供程序 - "仅返回生成的类型"

尝试使用类型提供程序对类型级别的peano数进行编码:

namespace TypeProviderPlayground

open System
open Microsoft.FSharp.Core.CompilerServices
open System.Runtime.CompilerServices

[<assembly: TypeProviderAssembly()>]
do()

type Z = class end
type 'a S = class end
type N = class end

[<TypeProvider>]
type PeanoProvider(s: TypeProviderConfig) =
    let invalidate = Event<_,_>()
    interface ITypeProvider with
        member x.ApplyStaticArguments(typeWithoutArguments, typeNameWithArguments, staticArguments) =
            let n : int = unbox staticArguments.[0]
            [1..n] |> List.fold (fun s _ -> typedefof<S<_>>.MakeGenericType [| s |]) typeof<Z>
        member x.GetNamespaces() = 
            let ns = 
                { new IProvidedNamespace with
                    member x.GetNestedNamespaces() = [||]
                    member x.GetTypes() …
Run Code Online (Sandbox Code Playgroud)

f# type-providers

12
推荐指数
1
解决办法
2149
查看次数

使用类型提供程序而不是t4有什么好处吗?

据我所知,这两个工具都用于代码生成.使用t4生成的库可以在任何地方使用,类型提供程序只能与F#一起使用,那么重点是什么?

.net t4 f# type-providers

2
推荐指数
2
解决办法
463
查看次数

标签 统计

f# ×2

type-providers ×2

.net ×1

t4 ×1