小编NoI*_*his的帖子

string vs String - 单例区分联合

如果string是.net框架中String的别名,为什么会发生这种情况,我应该如何解释它:

type JustAString = string
> type JustAString = string

type JustAStringAgain = String 
> type JustAStringAgain = | String
Run Code Online (Sandbox Code Playgroud)

.net string f#

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

F# - 具有多个返回值的密码查询

鉴于此查询(从这里)

  let pAfollowers =
        client.Cypher
            .Match("n<-[:follows]-e")
            .Where(fun n -> n.Twitter = "tA")
            .Return<Person>("e")
            .Results
            .Select(fun x -> x.Name)
Run Code Online (Sandbox Code Playgroud)

我想调整它并让它返回打包在一起的多个值.不确定类型的外观:

let pAfollowers =
        client.Cypher
            .Match("n<-[r:follows]-e")
            .Where(fun n -> n.Twitter = "tA")
            .Return<???>("n, r, e")
Run Code Online (Sandbox Code Playgroud)

其次,我想知道是否有可能在a之后有一个return语句CreateUnique.我试图调整此查询:

let knows target (details : Knows) source =
        client.Cypher
            .Match("(s:Person)", "(t:Person)")
            .Where(fun s -> s.Twitter = source.Twitter)
            .AndWhere(fun t -> t.Twitter = target.Twitter)
            .CreateUnique("s-[:knows {knowsData}]->t")
            .WithParam("knowsData", details)
            .ExecuteWithoutResults()
Run Code Online (Sandbox Code Playgroud)

让它回归s,t而且details.

f# neo4j neo4jclient

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

使用LIFO逻辑运行的MailboxProcessor

我正在学习F#agents(MailboxProcessor).

我正在处理一个非常传统的问题.

  • 我有一个代理(dataSource),它是流数据的来源.数据必须由一系列代理(dataProcessor)处理.我们可以将其dataProcessor视为某种跟踪设备.
  • 数据的流动速度可能快于dataProcessor可以处理其输入的速度.
  • 有一些延迟是可以的.但是,我必须确保代理人始终处于工作之上,并且不会在过时的观察中被堆积

我正在探索解决这个问题的方法.

一个想法是实现堆栈(LIFO)dataSource.dataSourcedataProcessor可用于接收和处理数据时,将发送最新的观察结果.该解决方案可能有效,但dataProcessor可能需要被阻止和重新激活,因此可能会变得复杂; 并传达其状态dataSource,导致双向沟通问题.这个问题可以归结为一个blocking queue消费者-生产者问题,但我不知道..

第二个想法是有 dataProcessor照顾的消息排序.在这个架构中,dataSource只需在dataProcessor队列中发布更新.dataProcessor将用于Scan获取队列中可用的最新数据.这可能是要走的路.但是,我不确定在当前的设计中MailboxProcessor是否可以清除消息队列,删除旧的过时消息.此外,在这里写道:

不幸的是,当前版本的F#中的TryScan功能有两种方式.首先,重点是指定超时,但实现实际上并不尊重它.具体而言,不相关的消息会重置计时器.其次,与其他扫描功能一样,在锁定下检查消息队列,该锁定防止任何其他线程在扫描期间发布,这可能是任意长的时间.因此,TryScan函数本身往往会锁定并发系统,甚至可能引入死锁,因为调用者的代码是在锁内部进行评估的(例如,当锁定下的代码阻塞时,从函数参数发送到Scan或TryScan会使代理死锁获得已经存在的锁定.

将最新观察结果反弹可能是一个问题.这篇文章的作者@Jon Harrop暗示了这一点

我设法围绕它进行构建,结果架构实际上更好.本质上,我热切地Receive使用我自己的本地队列来消息和过滤所有消息.

这个想法肯定值得探索,但在开始使用代码之前,我会欢迎一些关于如何构建解决方案的输入.

谢谢.

f# asynchronous agent mailboxprocessor lifo

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

抽象类类型签名中的可选参数

班级:

type NotAbstract () = 
    member this.WithOptionalParameters (x, ?y) = 
        let y = defaultArg y 10
        x + y
Run Code Online (Sandbox Code Playgroud)

具有以下类型签名:

type NotAbstract =
  class
    new : unit -> NotAbstract
    member WithOptionalParameters : x:int * ?y:int -> int
  end
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用:

[<AbstractClass>]
type AbstractExample () = 
    abstract WithOptionalParameters: int * ?int -> int /// Ouch...

type NotAbstract () = 
    inherit AbstractExample ()
    override this.WithOptionalParameters (x, ?y) = 
        let y = defaultArg y 10
        x + y
Run Code Online (Sandbox Code Playgroud)

如何在带有可选参数的函数的抽象定义中编写正确的类型签名?我没有在这里找到任何暗示.

PS:我知道(类似的)结果可以通过多态实现

f# abstract-class optional-parameters

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

如何为Visual Studio 2012 fsi更新FSharp.Core

我想在fsi中运行一个脚本.我收到以下错误.

无法加载文件或程序集'FSharp.Core,Version = 4.3.1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.

我发现以下引用建议我可能必须在Visual Studio中的某处更新默认的FSharp.Core版本,使用nuget下载包是不够的.

我不知道如何解决这个问题,我担心永久性地损坏vs配置.

f# f#-interactive visual-studio-2012

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

错误 [HY000] 一般错误:无效的文件 dsn ''

我正在尝试使用此代码片段 并且收到以下错误消息:

System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] General error: Invalid file dsn ''
   at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
   at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection o
wningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldC
onnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnecti
onOptions userOptions)
   at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.Odbc.OdbcConnection.Open()
Run Code Online (Sandbox Code Playgroud)

精简后的代码是:

open System
open System.Data.Odbc

let connectToAccess filename = …
Run Code Online (Sandbox Code Playgroud)

ms-access f# odbc

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

黑客引用的程序集

我知道关于这个主题还有其他问题,例如:

..但是,嘿,我是F#的新手,但仍然没有得到它.

我有一个F#project(thelibrary),它包含一些模块.该项目在解决方案资源管理器中引用了所有必需的库.每个.fs文件都会打开模块中使用的库.F#项目编译正确.

然后我有另一个包含脚本的F#项目.我引用thelibrarythelibrary自己使用的库.在脚本中,我引用#r了dll thelibrary以及所使用的所有库thelibrary.然后open是我所有的模块.Intellisense说在我执行脚本之前一切都很好.

该脚本返回错误:

error FS0074: The type referenced through 'Fmat.Numerics.Matrix`2' is defined in an assembly that is not referenced. You must add a reference to assembly 'Fmat.Numerics'.
Run Code Online (Sandbox Code Playgroud)

破解这个问题的程序是什么?我该如何从那里出发?我感兴趣的是这个特定问题的解决方案,但同样,一个菜谱配方来解决这类问题,这对我来说是一个令人沮丧的原因.

谢谢.

f# assemblies

4
推荐指数
2
解决办法
1043
查看次数

底图上的`map.scatter`不显示标记

我有一张德国地图,以及几个城市的坐标. plot正确显示点.我想改为使用scatter,以便能够针对其他变量为市场着色,然后显示一个colorbar.该代码在控制台上运行,但是当我更换点不会显现map.plotmap.scatter.

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np


plt.figure(1)
map = Basemap(projection='merc',
              resolution='l',
              llcrnrlat=44.0,
              llcrnrlon=5.0,
              urcrnrlat=57.0,
              urcrnrlon=17)
map.drawcoastlines()
map.drawcountries()
map.fillcontinents(color='lightgray')
map.drawmapboundary()

long = np.array([ 13.404954,  11.581981,   9.993682,   8.682127,   6.960279,
         6.773456,   9.182932,  12.373075,  13.737262,  11.07675 ,
         7.465298,   7.011555,  12.099147,   9.73201 ,   7.628279,
         8.801694,  10.52677 ,   8.466039,   8.239761,  10.89779 ,
         8.403653,   8.532471,   7.098207,   7.216236,   9.987608,
         7.626135,  11.627624,   6.852038,  10.686559,   8.047179,
         8.247253,   6.083887,   7.588996,   9.953355,  10.122765])

lat = …
Run Code Online (Sandbox Code Playgroud)

python scatter colorbar matplotlib-basemap

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

Deedle - 创建空列表和系列

我是 F# 的新手,将其视为 Matlab 的替代品。

关于这个问题,我如何创建一个空的意甲和一个空的框架。如果我没有错过它,为什么图书馆中没有设计一个空的 Serie 或 Frame 之类的list.empty

f# deedle

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

泛型的计算表达

我正在努力解决这个通用表达式:

type World<'a, 'b, 'c> = World of 'a * 'b * 'c
type StateFunc<'State, 'T> = 'State -> 'T * 'State


type StateMonadBuilder<'State>() =

    // M<'T> -> M<'T>
    member b.ReturnFrom a : StateFunc<'State, 'T> = a

    // 'T -> M<'T>
    member b.Return a : StateFunc<'State, 'T> = ( fun s ->  a, s)

    // M<'T> * ('T -> M<'U>) -> M<'U>
    member b.Bind(p : StateFunc<_, 'T>, rest : 'T -> StateFunc<_,_>) : StateFunc<'State, 'U>  = 
        (fun s ->
            let …
Run Code Online (Sandbox Code Playgroud)

generics f#

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