DataContractJsonSerializer为F#记录类型创建JSON,其中包含每个属性名称后面的"@"字符.有没有人知道是否有可能获得没有这个尾随符号的JSON?
{"heart_rate@":20,"latitude@":45.0,"longitude@":108.0,"name@":"Rambo"}
Run Code Online (Sandbox Code Playgroud)
这是我用来输出此示例的脚本
#r "System.Xml"
#r "System.Runtime.Serialization"
open System.Text
open System.Runtime.Serialization.Json
open System.IO
type Update = {
name: string;
latitude: decimal;
longitude: decimal;
heart_rate: int}
let update = {name = "Rambo"; latitude = 45.0m; longitude = 108.0m; heart_rate = 20}
let serializer = new DataContractJsonSerializer( typeof<Update> )
let stream = new MemoryStream()
let data = serializer.WriteObject(stream, update)
let updateData = stream.ToArray()
let json = (Encoding.UTF8.GetString(updateData))
printfn "%s" json
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何使用clojure有效地将一个简单的操作并行地应用于一个大的序列.我希望能够使用并行解决方案来利用我机器上的多个内核来实现一些加速.
我试图将pmap与partition-all结合使用,以减少为输入seq中的每个项创建未来的开销.不幸的是,partition-all强制完成每个分区seq的评估.这会导致我的机器上出现OutOfMemoryError.
(defn sum [vs]
(reduce + vs))
(def workers
(+ 2 (.. Runtime getRuntime availableProcessors)))
(let
[n 80000000
vs (range n)]
(time (sum vs))
(time (sum (pmap sum (partition-all (long (/ n workers)) vs)))))
Run Code Online (Sandbox Code Playgroud)
如何将sum应用于大型输入集,并优于串行实现的性能?
解
感谢@Arthur Ulfeldt指出reducers库.这是使用reducer的解决方案.此代码显示了在多核计算机上运行时预期的性能提升.(注意:我已将vs更改为一个函数,使时间更准确)
(require '[clojure.core.reducers :as r])
(let
[n 80000000
vs #(range n)]
(time (reduce + (vs)))
(time (r/fold + (vs)))
Run Code Online (Sandbox Code Playgroud) 我有一个 azure 函数,如果你在它的 url 中包含一个查询参数,它会计算额外的输出。我想在一个逻辑应用程序来使用这个功能,但我正在逐渐尝试使用错误的查询蔚蓝的功能连接器的参数设置查询参数。
Queries 参数定义如下:
我无法弄清楚如何将带有度量单位的小数转换为带有度量单位的浮点数.
我一直在尝试类似于以下的代码:
let toFloat (value: decimal<'T>) =
let value = float (value / LanguagePrimitives.GenericOne<decimal<'T>>)
value * LanguagePrimitives.GenericOne<float<'T>>
Run Code Online (Sandbox Code Playgroud)
这个方法产生一个decimal - > float的签名,这不是我想要的.我正在尝试创建一个decimal <'T> - > float <'T>类型的函数.
有可能创建这样的功能吗?如果是这样,它会是什么样子?