小编Joh*_*ood的帖子

将F#记录类型序列化为JSON在每个属性后包含"@"字符

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)

f# json

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

如何使用Clojure并行计算大量数字的总和

我试图弄清楚如何使用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)

parallel-processing clojure

9
推荐指数
1
解决办法
1576
查看次数

逻辑应用函数连接器中查询参数的正确语法是什么?

我有一个 azure 函数,如果你在它的 url 中包含一个查询参数,它会计算额外的输出。我想在一个逻辑应用程序来使用这个功能,但我正在逐渐尝试使用错误的查询蔚蓝的功能连接器的参数设置查询参数。

无法在“JoinJsonArrays”行“1”和“1997”列的输入中处理模板语言表达式:“将值“calculateMergeHint=true”转换为“Microsoft.Azure.Flow.Data.Operations.QueryStringDictionary”时出错。 路径“查询”。

Queries 参数定义如下:

计算合并提示=真

azure-logic-apps azure-functions

7
推荐指数
1
解决办法
1346
查看次数

如何将带有度量单位的小数转换为具有相同单位的浮点数?

我无法弄清楚如何将带有度量单位的小数转换为带有度量单位的浮点数.

我一直在尝试类似于以下的代码:

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>类型的函数.

有可能创建这样的功能吗?如果是这样,它会是什么样子?

f# units-of-measurement

4
推荐指数
1
解决办法
490
查看次数