小编aka*_*nom的帖子

F#活动模式List.filter或等效

我有类型的记录

type tradeLeg = {
    id : int ;
    tradeId : int ;
    legActivity : LegActivityType ;
    actedOn : DateTime ;
    estimates : legComponents ;
    entryType : ShareOrDollarBased ;
    confirmedPrice: DollarsPerShare option;
    actuals : legComponents option ; 


type trade = {
    id : int ;
    securityId : int ;
    ricCode : string ;
    tradeActivity : TradeType ;
    enteredOn : DateTime ;
    closedOn : DateTime ;
    tradeLegs : tradeLeg list  ;
}
Run Code Online (Sandbox Code Playgroud)

贸易腿显然是一种交易类型.一条腿可能已经结算或未结算(或未结算但已确认价格) - 因此我已定义了活动模式:

let (|LegIsSettled|LegIsConfirmed|LegIsUnsettled|) (l: tradeLeg) = 
        if …
Run Code Online (Sandbox Code Playgroud)

f# list active-pattern

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

F#在类上实现list []运算符?

我在F#中有一个自定义类,我想实现[] list运算符

let myClass = new myClassObj()
let someVal  = myClass.[2]
Run Code Online (Sandbox Code Playgroud)

我似乎无法在网上找到这个 - 我可能不知道正确的术语来搜索...提前感谢

f# operator-overloading

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

F# 将构造函数添加到记录?

基本上我想有一个单一的构造来处理序列化到 JSON 和格式化的 xml。Records 可以很好地序列化到 json 或从 json 序列化。但是 XmlSerializer 需要一个无参数的构造函数。我真的不想经历为这些构造构建类对象的练习(仅限原则)。我希望可以有一些快捷方式将无参数构造函数放到记录上(也许使用 wioth 语句或其他东西)。我无法让它表现 - 社区中有人有运气吗?

module JSONExample
    open System
    open System.IO 
    open System.Net 
    open System.Text 
    open System.Web 
    open System.Xml
    open System.Security.Authentication 
    open System.Runtime.Serialization //add assemnbly reference System.Runtime.Serialization System.Xml
    open System.Xml.Serialization
    open System.Collections.Generic 

    [<DataContract>]            
    type ChemicalElementRecord = { 
        [<XmlAttribute("name")>]
        [<field: DataMember(Name="name") >] 
        Name:string 

        [<XmlAttribute("name")>]
        [<field: DataMember(Name="boiling_point") >] 
        BoilingPoint:string 

        [<XmlAttribute("atomic-mass")>]
        [<field: DataMember(Name="atomic_mass") >] 
        AtomicMass:string 
    } 

    [<XmlRoot("freebase")>]
    [<DataContract>] 
    type FreebaseResultRecord = { 
        [<XmlAttribute("code")>]
        [<field: DataMember(Name="code") >] 
        Code:string 

        [<XmlArrayAttribute("results")>]
        [<XmlArrayItem(typeof<ChemicalElementRecord>, ElementName = "chemical-element")>]
        [<field: …
Run Code Online (Sandbox Code Playgroud)

.net f# datacontractserializer xmlserializer

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

Seq.fold 和布尔累加器

我永远找不到 F# 核心库的源代码。我知道它应该是开放的,但谷歌在帮助我找到它时对我并不友好,如果是这样,我会查找 Seq.fold 的实现 - 但问题就在这里。

有没有人看到以下代码段有任何问题:

let success = myList |>
                    Seq.fold 
                        (fun acc item -> evaluation item)
                        false 
Run Code Online (Sandbox Code Playgroud)

从逻辑上讲,它似乎不保水,我可以并且将尝试对其进行测试。但我想问社区。如果 myList 中的任何单个评估返回 false,我希望成功变量为 false...


所以测试:

let myList = [true; true]
let success = List.fold (fun acc item -> acc && item) true myList
Run Code Online (Sandbox Code Playgroud)

let myList = [true; false; true]
let success = List.fold (fun acc item -> acc && item) true myList
Run Code Online (Sandbox Code Playgroud)

确实返回正确的结果 - 我只是看到源会更舒服......

f#

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

DataContract/JsonSerializer'@'附加到变量名称

由于某些原因,我序列化一个类型(f#):

type JsonKeyValuePair<'T, 'S> =  {
    [<DataMember>] 
    mutable key : 'T
    [<DataMember>] 
    mutable value : 'S
}

let printJson() = 

    use stream = new MemoryStream() 
    use reader = new System.IO.StreamReader(stream)

    let o = {key = "a"; value = 1 }
    let jsonSerializer = Json.DataContractJsonSerializer(typeof<TestGrounds.JsonKeyValuePair<string, int>>)

    jsonSerializer.WriteObject (stream , o)
    stream.Seek(int64 0, SeekOrigin.Begin) |> ignore 

    printfn <| Printf.TextWriterFormat<unit>(reader.ReadToEnd())
    ()
Run Code Online (Sandbox Code Playgroud)

它生成一个字符串:

{ "键@": "一", "值@":1}

如果我尝试在没有@符号的情况下反序列化它:

let deserialize() = 
    let json = "{\"key\":\"b\",\"value\":2}"
    let o  = deserializeString<TestGrounds.JsonKeyValuePair<string, int>> json
    ()
Run Code Online (Sandbox Code Playgroud)

{"数据协定类型'TestGrounds.JsonKeyValuePair`2 [[System.String,mscorlib,Version …

.net c# f# json datacontract

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

修改Django Rest Framework中序列化程序的输出

我正在使用django rest框架来输出文章的内容.它工作得很精彩,除了现在我想修改行为不返回完整的"内容",而是一个预告片(比如内容的前200个字符,但理想情况下我希望能够添加任何逻辑,比如说200个字符后的第一句结尾):

class ArticleSerializer(serializers.HyperlinkedModelSerializer):
    user = UserSerializer(many=False, read_only=True)

    class Meta:
        model = models.Article
        fields = (
            'id'
            ,'title'
            , 'date_added'
            , 'content'
            , 'user'
        )
Run Code Online (Sandbox Code Playgroud)

我看了GenericAPIView,我认为可能有一些东西要覆盖 - 但没有什么看起来很明显 - 有人可以提供一些见解吗?先感谢您

python django django-rest-framework

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

F# 通用问题:无法泛化,因为它会超出其范围

我在一个共同的地方定义了这个:

[<DataContract>]
type ResultObject = {
    [<DataMember>]
    mutable field1: string
    [<DataMember>]
    mutable field2: string
    [<DataMember>]
    mutable field3: int 
}

let createCache<'T> () =
    Dictionary<_, 'T option>(HashIdentity.Structural)  


let memoizeSingleParamWithCallback<'R, 'P when 'P : equality>  functionToMemoize =    

    let cache = createCache<'R>() 

    // return a function that takes two parameters a parameter to the functionToMemoize  and a callback 
    fun (parameter: 'P) (callback: Action<_>) ->
        // form a unique cache key the parameterValue
        let key = parameter

        // check to see if the cache …
Run Code Online (Sandbox Code Playgroud)

generics f#

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

新手:从哪里开始给出一个问题来预测未来的成功与否

我们有一个基于生产网络的产品,允许用户对商品的未来价值(或需求)做出预测,历史数据包含大约10万个例子,每个例子有大约5个参数;

考虑一类称为谓词的数据:

prediction {
    id: int
    predictor: int    
    predictionDate: date
    predictedProductId: int
    predictedDirection: byte  (0 for decrease, 1 for increase)
    valueAtPrediciton: float
}
Run Code Online (Sandbox Code Playgroud)

以及测量预测结果的配对结果类:

predictionResult {
    id: int
    valueTenDaysAfterPrediction: float
    valueTwentyDaysAfterPrediction: float
    valueThirtyDaysAfterPrediction: float
}
Run Code Online (Sandbox Code Playgroud)

我们可以定义一个成功的测试用例,其中如果任何两个未来的值检查点在预测时考虑方向和值时是有利的.

success(p: prediction, r: predictionResult): bool = 
    count: int 
    count = 0

    // value is predicted to fall
    if p.predictedDirection = 0 then
       if p.valueAtPrediciton > r.valueTenDaysAfterPrediction then count = count + 1
       if p.valueAtPrediciton > r.valueTwentyDaysAfterPrediction then count = count + 1
       if p.valueAtPrediciton …
Run Code Online (Sandbox Code Playgroud)

pattern-recognition classification machine-learning data-mining

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

如何使我的功能通用

    let csvList startDelim endDelim lst memF = 
        let listIter (listStr: string) item = 
            if listStr.Length > 0 then 
                listStr + "," + (memF item)
            else 
                memF item                
        startDelim + (List.fold listIter "" lst) + endDelim

    let listIntoJsonArray = csvList "[" "]"
    let listIntoJsonObject = csvList "{" "}"

    let intConverter (item:int) : string =
        item.ToString()

    let objectConverter (item:SomeObject) : string =
        item.value.ToString()

    let objects = [{vaue: 12.3}; {vaule: 33.2}]
    let ints = [1;2;4]

    let o = listIntoJsonObject objects objectConverter
    let i …
Run Code Online (Sandbox Code Playgroud)

generics f# value-restriction

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

Ruby Grape:json 输出被转义

我正在处理一个示例 Ruby/Grape 示例,除了 json 被转义外,一切正常。我也是全新的 ruby​​ 及其框架(仅 3 天),如果这个问题是补救性的,那么很抱歉,并提前感谢您

我相当肯定不应该对引号进行转义,无论如何这里是转义的输出:

"{\"word\":\"test\",\"sentiment\":\"unkown\"}"
Run Code Online (Sandbox Code Playgroud)

我的代码

require 'rubygems'
require 'grape'
require 'json'

class SentimentApiV1  < Grape::API
  version 'v1', :using => :path, :vendor => '3scale'
  format :json

  resource :words do
    get ':word' do
        {:word => params[:word], :sentiment => "unkown"}.to_json
    end

    post ':word' do
      {:word => params[:word], :result => "thinking"}.to_json
    end 
  end

  resource :sentences do
    get ':sentence' do
      {:sentence => params[:sentence], :result => "unkown"}.to_json
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

配置文件

$:.unshift "./app"

需要'sentimentapi_v1.rb'

运行 SentimentApiV1

包和版本

C:\Ruby-Projects\GrapeTest>bundle install …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-grape grape-api

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

如何迭代生成器函数的结果

有没有更好的方法可以迭代生成器的结果,我的for循环很丑陋:

for(let job = readyJob.next(); !job.done; job = readyJob.next()){ } 
Run Code Online (Sandbox Code Playgroud)

在上下文中,有一个生成器函数可以确定是否存在由1 .. *个作业组成的一批工作(生成器也可能在批处理中不返回任何作业)。有一个连续的循环实例化生成器并遍历批处理工作(记录)。

有没有更好的解决此迭代问题的方法。我的意思是,这看起来像Java / C#的传统迭代器,还不错。像“每个”这样的东西是超级可读的……无论如何,这就是我的希望。

 let getReadyJob = function *(instance){
    let numJobs = 7 ; // getRandomInt(0, 10) ;
    for(let i = 0; i < numJobs; i++) {
        yield {
            jobId: '' + instance + '::' + i,
            jobReadyOn: (new Date()).valueOf()
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

然后

while(true){
    let readyJob = getReadyJob()

    for(let job = readyJob.next(); !job.done; job = readyJob.next()){
        console.log(JSON.stringify(job.value)) ;
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript generator node.js ecmascript-6

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

带有泛型的F#类:'建设者已弃用'错误

我正在尝试创建一个类,它将存储一组时间序列的数据 - 按组进行组织,但我有一些编译错误,所以我剥离了基础知识(只是一个简单的实例化),仍然无法克服编译错误.我希望有人可能以前见过这个问题.Clas定义为:

type TimeSeriesQueue<'V, 'K when 'K: comparison> = class
        val private m_daysInCache: int  
        val private m_cache: Map<'K, 'V list ref > ref;
        val private m_getKey: ('V -> 'K) ;

        private new(getKey)  = {
            m_cache = ref Map.empty
            m_daysInCache  = 7 ;
            m_getKey = getKey ;
        }

end
Run Code Online (Sandbox Code Playgroud)

所以对我来说看起来没问题(它可能不是,但没有任何错误或警告) - 实例化得到错误:

type tempRec = {
    someKey: string ;
    someVal1: int ;
    someVal2: int ;
}

let keyFunc r:tempRec = r.someKey
// error occurs on the following line
let q …
Run Code Online (Sandbox Code Playgroud)

generics f# class

0
推荐指数
1
解决办法
351
查看次数