标签: f#-data

如何在函数内部的f#中将静态参数传递给typeprovider

我正在使用FSharp.Data typeproviders

我想制作一个具有参数的函数,该参数设置typeprovider's示例字符串或文件位置。

let SyncIt url sample converter storer =
    async {
        url
        |> MakeRequestAsync 
        |> Async.RunSynchronously
        |> JsonProvider< sample >.Parse
        |> Seq.iter (converter >> storer)
    }
Run Code Online (Sandbox Code Playgroud)

如果使用以下命令调用模块中的JsonProvider

[<Literal>]
let sample = """{"name":"Peter","age":9}"""

type provider = JsonProvider<sample>
Run Code Online (Sandbox Code Playgroud)

工作正常。为什么我不能通过它parameter?我知道它与在编译时清楚引用有关,但是除了声明每个引用之外,其他所有方法都无法解决providers explicitly

f# type-providers f#-data

3
推荐指数
1
解决办法
817
查看次数

未定义类型“ XmlProvider”

我正在尝试使用FSharp.Data第三方库,但The type 'XmlProvider' is not definedXmlProvider类上遇到了错误。

namespace KMyMoney

open FSharp.Data

  module Read =

    let xml = File.ReadAllText("KMyMoneySampleFile.xml")
    type KMyMoneySource = XmlProvider<xml>
Run Code Online (Sandbox Code Playgroud)

我正在使用NuGet来获取库。库为'FSharp.Data 1.1.8'

当我键入FSharp.Data.有四个选项中给出:CsvFreebaseOperatorsJson,和RuntimeImplementation

我想念什么吗?我对F#比较陌生。因此,对这个简单的问题感到抱歉。我看过GitHub,但没有看到任何有关此问题的信息。我正在F#中创建一个库。

f# type-providers f#-data

3
推荐指数
1
解决办法
2033
查看次数

CSV类型提供程序

我试图找到一个简单的示例或介绍CSV类型提供程序.所以我按照这个链接来帮助我开始.现在我有一个Visual Studio 2012学生版,虽然文档说F#3.0有CSV类型提供程序但我无法找到它.所以我试图为本地CSV文件使用类型提供程序.我看到的是提到的CSV TypeProvider根本不存在.由于给定的示例没有真正编译,我环顾四周并使用类似的东西来加载oData服务:

#r "FSharp.Data.TypeProviders"
///loading a stackoverflow odata type provider
type stackOverflow = Microsoft.FSharp.Data.TypeProviders.ODataService<"http://data.stackexchange.com/stackoverflow/atom">
Run Code Online (Sandbox Code Playgroud)

所以这与上面的示例页面中提到的有点不同.我无法看到csv类型提供程序.我使用Visual Studio IDE列出类型提供程序,并且未列出csv.我尝试使用nuget更新软件包,但这仍然存在.任何人都可以指出如何使用csv类型提供程序的正确文档,以及可以找到一个简单示例的正确更新链接?

f# f#-interactive type-providers f#-data

3
推荐指数
1
解决办法
1613
查看次数

F#Data JSON类型提供程序:如何处理可以是数组或属性的JSON属性?

我正在使用F#Data库中的JSON类型提供程序从API访问JSON文档.文档包含一个属性(让我们称之为'car'),有时候是一个对象数组,有时候是一个对象.这是:

'car': [
  { ... },
  { ... }
]
Run Code Online (Sandbox Code Playgroud)

或这个:

'car': { ... }
Run Code Online (Sandbox Code Playgroud)

{ ... }在两种情况下,对象具有相同的结构.

JSON类型提供程序指示属性的类型为:

JsonProvider<"../data/sample.json">.ArrayOrCar
Run Code Online (Sandbox Code Playgroud)

sample.json我的样本文件在哪里.

我的问题是:我怎样才能弄清楚属性是一个数组(以便我可以将它作为数组处理)还是单个对象(以便我可以将它作为一个对象处理)?

更新: 简化的示例JSON将如下所示:

{
  "set": [
    {
      "car": [
        {
          "brand": "BMW" 
        },
        {
          "brand": "Audi"
        }
      ]
    },
    {
      "car": {
        "brand": "Toyota"
      }
    } 
  ]
}
Run Code Online (Sandbox Code Playgroud)

并且使用以下代码将指出类型doc.Set.[0].CarJsonProvider<...>.ArrayOrCar:

type example = JsonProvider<"sample.json">
let doc = example.GetSample()
doc.Set.[0].Car
Run Code Online (Sandbox Code Playgroud)

f# json type-providers f#-data fsharp.data.typeproviders

3
推荐指数
1
解决办法
927
查看次数

F#CsvTypeProvider - 来自推断类型的映射函数

我正在使用CsvTypeProvider将CSV文件中的数据映射到我自己的数据结构中.这非常有效,除了我必须每次都重复映射功能:

type GamesFile = CsvProvider<"./data/15.csv">
let games15 = GamesFile.Load("./data/15.csv").Rows |> Seq.map ( fun c -> { Division = c.Div; Date = c.Date; HomeScore = c.HomeScore; AwayScore = c.AwayScore })
let games16 = GamesFile.Load("./data/16.csv").Rows |> Seq.map ( fun c -> { Division = c.Div; Date = c.Date; HomeScore = c.HomeScore; AwayScore = c.AwayScore })
Run Code Online (Sandbox Code Playgroud)

当我尝试将它移动到一个函数时,我被告知"基于此程序点之前的信息查找不确定类型的对象.在此程序点之前可能需要类型注释来约束对象的类型.这可能允许解析查找."

这是有道理的,但是如何从CSV的内容推断类型时,如何告诉映射函数它是什么类型?这通常如何解决?

f# type-providers f#-data

3
推荐指数
1
解决办法
126
查看次数

使用 Windows 凭据的 F# 数据 http 请求

我正在尝试从启用了 Windows 身份验证的 IIS 托管的页面中获取一些 html。

到目前为止,我有:

open FSharp.Data

[<EntryPoint>]
let main argv = 
    let html = Http.RequestString ("http://mywebsite.com/Detail.aspx", query=[("zip","9000");("date","11/01/2017")], headers=[???])

    printf "%s" html
    System.Console.ReadLine() |> ignore
    0 // return an integer exit code
Run Code Online (Sandbox Code Playgroud)

我需要在标题列表中添加什么?

f# f#-data

3
推荐指数
1
解决办法
475
查看次数

如何处理 FSharp.Data JsonProvider 中缺少的属性?

假设有一个这样的提供者:

type ColorProvider = JsonProvider<"""
{
    "id": "b35b5bcf-761a-4e50-9ff0-4c7de7dd0e5d",
    "color": "Red"
}
""">
Run Code Online (Sandbox Code Playgroud)

如果这些对象之一根本没有 color 属性,则尝试从集合中打印颜色将失败:

dataAccess.QueryAsEnumerable<string>("SELECT Data FROM Objects")
|> Seq.map ColorProvider.Parse
|> Seq.iter (fun item -> printfn "%A" item.Color)
Run Code Online (Sandbox Code Playgroud)

有一个 JsonValue.Null 可以比较,但在这种情况下它不是空的,只是缺少该属性。

如何过滤掉没有颜色属性的项目?

f# f#-data fsharp.data.typeproviders

3
推荐指数
1
解决办法
356
查看次数

如何使用F#TypeProvider读取PowerBall csv?

强力球模式和分隔符不一致,这使得它成为一个不寻常的文件.(http://www.powerball.com/powerball/winnums-text.txt)

样品: Draw Date WB1 WB2 WB3 WB4 WB5 PB PP 09/24/2016 15 07 29 41 20 22 2 09/21/2016 63 67 01 69 28 17 4 09/17/2016 51 19 09 62 55 14 4

有什么建议?

f# f#-data

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

如何让Fsharp显示图表?

Chart.Line [ for x in 1.0 .. 100.0 -> (x, x ** 2.0) ]
Run Code Online (Sandbox Code Playgroud)

我多次尝试将Fsharp的图表视为F#Charting

我安装了一些我认为需要的扩展:

  • Fsharp.Charting
  • Fsharp.Chart
  • Fsharp.Charting.Gtk
  • Microsoft.Chart.Controls

但对我来说,这似乎还不够.你能给我一些有用的指导吗?非常感谢你 .

在此输入图像描述

在此输入图像描述

charts f# fsharpchart f#-data

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

为什么 f# 会在没有警告或错误的情况下改变不可变变量?

以下脚本改变了不可变变量 jar,没有错误或警告。这是一个错误吗?还是我的理解有问题?

请解释为什么我不需要使用 mutable 关键字。

旁白:FSharp.Data.Http.RequestString 的 cookieContainer 参数在定义中未标记为可变:https://github.com/fsprojects/FSharp.Data/blob/134a08cda3acb8e746bb25d03692d90ee5caabab/src/Net/Http.fs

#r "System.Xml.Linq.dll";;
#r "nuget:FSharp.Data";; 

open FSharp.Data

let url="http://www.google.com"
let uri=System.Uri(url)

// no mutable keyword here
let jar=System.Net.CookieContainer()

// Count is 0
printf $"Pre-request cookie count is: {jar.GetCookies(uri).Count}\n"

let r = Http.RequestString(url, cookieContainer=jar) 

// Count is 1
printf $"Post-request cookie count is: {jar.GetCookies(uri).Count}\n" 
Run Code Online (Sandbox Code Playgroud)

#r "System.Xml.Linq.dll";; #r "nuget:FSharp.Data";;

f# f#-data

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