-
Notifications
You must be signed in to change notification settings - Fork 1
TypeProviders
-
Static parameters
<>- Angle brackets are used to supply static parameters, meaning parameters that are known at compile time. Static parameters typically give type providers necessary information to access some external information source -
Dynamic parameters
()- used in Runtime -
Generated types - are regular .net types, if you want to use generated types in other .net languages you have to generate them with the F# compiler in some separate assembly.
-
Erased types - are no regular types. In fact, even in F#, the only way you can get them is with type providers.
-
Modern compilers - Modern compilers work not only when you explicitly try to compile something.
-
MetaProgramming - More formally, type providers are a form of compile time meta-programming
http://tomasp.net/blog/2015/fslab-world-visualization/ gamma: http://thegamma.net/files/cj2015.pdf
- fsharp3sample - https://archive.codeplex.com/?p=fsharp3sample
- git WorldBank
- FSharp.Data
- FSharp.Data.TypeProviders
- Git - FSharp.TypeProviders.SDK
- Git - WebSharper.Data/WorldBankProvider.fs
- Country - http://api.worldbank.org/country?per_page=10&format=json&page=1
- Region - http://api.worldbank.org/region?per_page=10&format=json&page=1
- Topic - http://api.worldbank.org/topic?per_page=10&format=json&page=1
- Exm1: http://api.worldbank.org/countries/GBR/indicators/SE.TER.ENRR?per_page=1000&format=json&date=1900:2050&page=1
-
Could not create SSL/TLS secure channel
-
new-itemproperty -path "HKLM:\SOFTWARE\Microsoft.NETFramework\v4.0.30319" -name "SchUseStrongCrypto" -Value 1 -PropertyType "DWord";
-
new-itemproperty -path "HKLM:\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319" -name "SchUseStrongCrypto" -Value 1 -PropertyType "DWord"
-
packet restore
XmlProvider, JsonProvider, HtmlProvider, CsvProvider
inherit DisposableTypeProviderForNamespaces(cfg, assemblyReplacementMap=[ "FSharp.Data.DesignTime", "FSharp.Data" ])
let asm = AssemblyResolver.init cfg (this :> TypeProviderForNamespaces)
let ns = "FSharp.Data"
let xmlProvTy = ProvidedTypeDefinition(asm, ns, "XmlProvider", None, hideObjectMethods=true, nonNullable=true)
let jsonProvTy = ProvidedTypeDefinition(asm, ns, "JsonProvider", None, hideObjectMethods=true, nonNullable=true)
let htmlProvTy = ProvidedTypeDefinition(asm, ns, "HtmlProvider", None, hideObjectMethods=true, nonNullable=true)
let csvProvTy = ProvidedTypeDefinition(asm, ns, "CsvProvider", None, hideObjectMethods=true, nonNullable = true)
let buildTypes (typeName:string) (args:obj[]) =
...
generateType (if schema <> "" then "XSD" else "XML") source getSpec this cfg encodingStr resolutionFolder resource typeName None
generateType "JSON" source getSpec this cfg encodingStr resolutionFolder resource typeName (*maxNumberOfRows*)None
generateType "HTML" (Sample sample) getSpec this cfg encodingStr resolutionFolder resource typeName (*maxNumberOfRows*)None
generateType "CSV" (if sample <> "" then Sample sample else Schema schema) getSpec this cfg encodingStr resolutionFolder resource typeName maxNumberOfRows
let parameters = [ProvidedStaticParameter("StaticBoolParam", typeof<bool>, parameterDefaultValue = false)]
let helpText = """<summary>...</summary><param name='Sample'>...</param>"""
do ...ProvTy.AddXmlDoc helpText
do ...ProvTy.DefineStaticParameters(parameters, buildTypes)
// Register the main type with F# compiler
do this.AddNamespace(ns, [ ...ProvTy ])
t.AddMember
t.AddMembers
t.AddMembersDelayed
t.AddXmlDocDelayedlet wsEntryPoint = serviceUrl
// Structural metadata queries:
// https://ws-entry-point/resource/agencyID/resourceID/version/itemID?queryStringParameters
// https://api.worldbank.org/v2/sdmx/rest/dataflow/all/all/latest/ WorldBank Dataflows
let dataflowsResource = "dataflow"
let defaultAgencyID = "all"
let defaultResourceID = "all"
let defaultVersion = "latest"