有没有办法将调用嵌套到F#活动模式?

有没有办法嵌套对活动模式的调用 大概是这样的: type Fnord = | Foo of int let (|IsThree|IsNotThree|) x = match x with | x when x = 3 -> IsThree | _ -> IsNotThree let q n = match n with | Foo x -> match x with | IsThree -> true | IsNotThr

F# 你如何用F表示(Keys.Control | Keys.M)?

在C#中,您可以以Keys.Control | Keys.M的形式表示KeyPress事件的字符。在F#中,Keys.Control | | | Keys.M不起作用。这是什么意思 编辑:确实很有趣。在F#交互式窗口中,按照约翰内斯·勒塞尔的建议,使用System.Windows.Forms.Keys.Control | | | | System.Windows.Forms.Keys.M。将其写入.fs文件: form.KeyPress.Add (fun e ->

F# 模式匹配问题?

我在与F进行模式匹配时遇到问题。我正在构建一个F库,到目前为止: namespace parser module parse = let public y = function | x when x.Contains("hi") -> "HELLO" | x when x.Contains("hello") -> "HI" | x -> x 但它给了我一个错误:基于此程序点之前的信息对不确定类型的对

F#将布尔的多维数组传递给函数

如何将布尔的多维数组传递给F#中的函数 谢谢 Maybettle根据您使用的是实际二维阵列(矩形阵列)还是锯齿阵列(其元素为阵列的阵列,长度可能不同),有两个选项: 如果您不确定使用哪一种,那么最好知道锯齿阵列更快,但使用矩形阵列可能更容易(因为您确定尺寸) 要调用这两个函数,可以使用以下语法: // Create array of arrays and call the function bar [| [| true |] |] // Creates array of arrays and

寻找最新的F#电源组

有人在做F#电源组吗 严肃地说-旧F#Core的最后一次更新是在2010年12月 因此,我已经为.net4和new core的某些部分(Linq2sql)进行了自己的重建,我认为还有其他人也得到了同样的重建,并且有人正在进行重建-我在哪里可以找到它?还是F#PP死了 此外,我只能看到较少的编译器修复。我喜欢,但它不是官方的树。好吧,开个玩笑,问题仍然是关于F#电源组的。根据中的一条评论,更新F#电源组还不是一个优先事项。对不起,但我看不出原因——他们当前的任务是什么?@nCdy:我猜他们不允许说

F# 如何打印fn int*int*int类型

如何在不创建其他函数的情况下打印fn此类型?您可以使用格式化程序%A打印任何类型: > (1, 2, 3);; val it : int * int * int = (1, 2, 3) > printfn "%d" (1, 2 ,3);; printfn "%d" (1, 2 ,3);; --------------^^^^^^^ stdin(2,15): error FS0001: The type '('a * 'b * 'c)' is not compatible

F# 如何迭代列表并将funciton结果传递给下一次迭代

我是F新手,为了学习,我认为实现一个聚类算法会很有趣。 我有一个需要迭代的列表输入列表。对于这些输入向量中的每一个,我需要应用一个函数来更新权重并返回一个列表权重矩阵列表。我可以通过newMatrix函数完成这部分。问题是,我需要在下一次迭代中使用更新后的权重矩阵,我不知道该怎么做。这里是重要的部分,一些函数为了简洁而被省略了 let inputList = [[1; 1; 0; 0]; [0; 0; 0; 1]; [1; 0; 0; 0]; [0; 0; 1; 1;]] let weights

F# 混淆错误消息“;预期类型单位,但为X“;

我不是看不到明显的东西,就是普遍感到困惑 我的代码如下所示: let inline createContext source destination = let src = (fun amount (s:^T) -> (^T : (member DecreaseBalance : decimal -> ^a) (s, amount))) let dst = (fun amount (d:^T) -> (^T : (member IncreaseBalance

在FSI4.0.30319.1和2.0.0.0上运行f#相同代码的性能差异巨大

我正在使用两个版本的fsi.exe运行相同的F#代码,我可以在我的FSharp-2.0.0.0安装中找到这两个版本: C:\Program Files\FSharp-2.0.0.0\bin\fsi.exe - Microsoft (R) F# 2.0 Interactive build 2.0.0 C:\Program Files\FSharp-2.0.0.0\v4.0\bin\fsi.exe - Microsoft (R) F# 2.0 Interactive build 4.0.30319

F# 程序集元数据中的类型别名在哪里?

文档清楚地表明,MSIL中不存在类型别名。但是,它们必须存在于程序集元数据中,因为它们可以从其他F#程序集使用。此信息在哪里?我相信此信息包含在程序集中的签名数据资源中-您可以使用FSharp.PowerPack.Metadata程序集来反映它。我猜是在某种特定于F的元数据中,这似乎是文档所暗示的-类型缩写没有保留在.NET Framework MSIL代码。因此,当您使用另一种.NET Framework语言的F#汇编时,必须使用基础类型名作为类型缩写。Uh-huh…问题是:它在哪里?找到了,

F# 如何仅计算惰性序列的一部分?

对于像处理无法一次性放入主内存的大型文件这样的事情来说,延迟评估是一个很大的好处。但是,假设序列中有一些元素需要立即计算,而其余的元素可以延迟计算——有没有办法指定呢 具体问题:(如果有助于回答问题) 具体来说,我使用一系列IEnumerable作为多个序列的迭代器-这些序列是从使用BinaryReader流打开的文件中读取的数据(每个序列负责从其中一个文件中读入数据)。将按特定顺序调用这些上的MoveNext()。例如iter0然后iter1然后iter5然后iter3。。。。等等此顺序在另一

可能的F#类型推断限制

我很确定我遇到了某种限制,但我不明白: type IRunner = abstract member Run : (string -> 'a) -> 'a type T() = let run4 doFun = doFun "4" let run5 doFun = doFun "5" let parseInt s = System.Int32.Parse(s) let parseFloat s = System.Double.Parse(s

F# 扩展websharper以支持十进制数据类型是否可能且可行?

我正在寻找一个能够为客户端生成Javascript的框架,我愿意为此学习更多的知识 Javascript中必须具有完全兼容的十进制数据类型 能做到吗? 是否有扩展Websharper的指南 我注意到在websharper网站上没有论坛的链接,websharper谷歌集团发布了2011年的最新帖子 项目是否仍在进行、维护和开发?是的,项目的维护非常积极。主要接触点在。分页@…作为WebSharper的替代方案,您还可以签出FunScript()。这是最近开发的一款F#to JavaScript翻译

如何为生成的程序集创建F#类型提供程序?

我在为F#生成类型提供程序使用程序集中创建的任何类型时遇到问题。我创建了一个示例来演示这一点 我收到的错误消息如下: 编译单元“Addressbook1”中的模块/命名空间“tutorial”不包含命名空间、模块或类型“Person” 在程序集“Addressbook1”中找到对类型“tutorial.Person”的引用,但在该程序集中找不到该类型 我不明白,因为类型肯定在程序集中。为了解决这个问题,程序集是一个非常基本的C#dll。视频中的代码可通过git获得: git url: git

Visual studio编辑器窗口中的f#方法下拉列表

在c#中,VS 2012的编辑器窗口右上角有一个方法下拉列表,用于显示类中的所有方法。有可能在f#中有相同的吗?如果没有一种方法,很多方法都很难遵循。早在2009年(大约2009年)我在MSR实习期间就为VisualStudio2010实现了一个原型。它从未经过正确测试,因此默认情况下未启用,但不知何故,代码保留在那里,可以通过向devenv.exe.config中的appSettings添加一些隐藏键来启用它(在VS2010和VS2012中)。还可以启用某些定义的折叠: <appSett

F# 在应用程序脚本托管中。tryfsharp.org是如何工作的?

我对在我的应用程序中使用F#脚本的能力感兴趣 拥有类似的东西会很棒,特别是智能感知能力。在Github的某个地方有这些功能吗?这是怎么回事?简短回答 使用F#2的TryFSharp的第一段代码,包括Intellisense支持,可作为。例如,Rob Pickering用它构建了一个在线编辑器。我怀疑当前使用F#3的TryFSharp网站上使用的代码会及时出现 TryFSharp使用Silverlight在客户端浏览器中托管F#编译器(F#是用F#编写的)。也可以根据需要从浏览器调用服务器上运行的

关于F#函数

下面是我在F#editor中编写的函数,它的工作原理与我预期的一样(答案:18) 但是如果我改变代码的顺序,比如 let cal(u:int) = quadruple u + 10; let quadruple x = x*2 let result = cal 4 我得到“未定义值或构造函数‘quadrule’”。根据这个错误,我推测,失败是由于在声明之前调用了一个函数。对我来说,这有点像翻译风格 问题:为什么会有这样的限制?这是为了保留一些兼容性问题吗?还是因为我没有定义任何模块/类 尽管惯

F# 为什么可以';WSDL类型提供程序是否消除歧义重载?

从 它们都不起作用 禁用其他端点并只将一个端点留给eConnectClient解决了问题,但我甚至不知道是否最终需要其他端点。不熟悉模式或类型提供程序,但WSDL标准不支持重载。如果WSDL是在运行时从实现生成的(通常是这样),那么运行时可能会生成这样一个无效的WSDL 通过使用反射找到我想要调用的方法,并动态地调用它,我能够克服这个问题 let svc: DynTypes.eConnectClient = Dynamics.GeteConnectServiceEndpoint() let sv

F# 我能把一个框架分类吗?

据我所知,Deedle框架仅按索引排序。是否有任何方法可以应用自定义排序函数或按给定序列排序(并定义升序/降序)?坚持使用类型为frame的“标准”框架(整数的行索引和字符串的列名)可以很容易地实现一个功能,该功能能够根据任何单列内容按升序或降序对框架进行重新排序: let reorder isAscending sortColumnName (frame:Frame<int,string>) = let result = frame |> Frame.indexR

F# 取消不同类型的异步时行为不一致

在取消不同类型的异步时,我遇到了看似不一致的行为问题 为了重现这个问题,我们假设有一个函数接受一个“作业”列表(异步列表),等待它们完成并打印结果。该函数还获取取消令牌,以便可以取消: let processJobs jobs cancel = Async.Start(async { try let! results = jobs |> Async.Parallel printfn "%A" results finally print

F# “序列模式”;“逆向工程”;

我想知道在支持此功能的核心库或第三方库中是否有任何用于此功能的既定模式 我已经使用seq表达式编写了一个复杂的序列,该表达式包含一个开始时间和一系列规则,这些规则规定了某些事件在向前的时间线上发生的时间,以创建一个无限序列。很容易提供任何起始DateTime值,然后开始前进。结果序列是与时间戳事件相对应的seq 我想做的是能够回到这个事件的理论时间轴上。我希望能够说“返回十步,给我那个日期时间”,这样我就知道如果我将结果应用到原始序列作为输入,我将回到我开始的地方 我是否需要颠倒复杂的逻辑才能让

F#核心库源代码有一个将元组编译为结构的标志,但我可以';我做不到

这是我的后续问题 显然,F#核心库源代码有一个标志,允许将2元组编译为结构。看见我做了以下工作: 在FSharp.Core.fsproj和FSharp.Compiler.fsproj中添加了defineTUPLE\u STRUXT标志 使用build.bat构建 将C:\Program Files(x86)\Microsoft SDK\F#\3.1\Framework\v4.0和C:\Program Files(x86)\Reference Assembly\Microsoft\FSharp\

F# 拉格朗日插值的多项式表示

如何表示一个不完整的数学函数 然后我需要做一些类似于(x-常数)的事情 (x - constant)*(x - another) => (x^2 - x * constant - x * another + constant * another) 等等 我正试图做一个程序来做拉格朗日插值(为一些点寻找一个函数) 所以我需要做一个函数,我可以从一组已知的值中看到(打印或其他)。 抱歉,如果混淆了。如果您指的是部分函数,即它在某些输入上未定义,则通常有两种方法来处理此问题。一种选择是使用选项

C++-类似于F#函数中的静态变量

在F#中有模拟吗?差不多 let f () = let mutable static a = 0 ... ?最简单的模拟是将let置于函数之前: let mutable static a = 0 let f () = 如果你真的想隐藏这个变量,你可以把整个东西封装在一个父模块中 否则,序列表达式允许记住函数中的变量,但这是一个非常重要的变化 其他一些想法-隐藏在类中: type t() = static let mutable t = 1 static mem

未在visual studio中更新f#程序集元数据

这可能是Visual Studio 2015中的一个bug(可能是更早的版本?),我只想先在这里检查一下,因为我在谷歌搜索时没有发现任何类似的问题 我有一个C#控制台应用程序和控制台应用程序使用的F#库的解决方案 在F#库中,我定义了一个包含一些成员的类,并更改了成员。虽然C#编辑器中的Intellisense正确地反映了F#库中的更改,但F#程序集的元数据没有更新。我已尝试清理、重建、重新添加程序集引用,但唯一的解决方案是重新打开解决方案或重新启动visual studio 这里出了什么问题?

F#未定义交互式CsvProvider

我正在交互控制台中加载FSharp.Data。加载库时没有任何问题: > #r "FSharp.Data.dll";; --> Referenced 'C:\Users\pw\AppData\Local\Temp\FSharp.Data.dll' (file may be locked by F# Interactive process) > open FSharp.Data;; 但是,当我尝试初始化CsvProvider(在FSharp.Data中定义)时,我收到一条错

F# 如何覆盖内置集合上的tostring

如何覆盖内置集合(如map或sequence)上的tostring函数,以便printfn使用此新的自定义tostring函数? 我猜应该是这样的 type seq<'T> with override xs.Tostring() = "blabla" 带有 ///重复序列中的每个元素n次 成员xs.RepeatElements(n:int)= seq{x在xs中对i在1..n中的do产生x} 第一个例子很好,但是对于第二个例子,我只是得到一个错误,说“类型

F#模块成员未初始化

我正在用F#编写单元测试,使用FsUnit和NUnit,以及用于VS2015 Ultimate CTP的NUnit测试适配器。我遇到了一个奇怪的问题,模块成员为null,这是我所不希望的 这是代码的问题,还是测试的执行方式 我已尝试将Foo.SpecificFooStrategy.create的签名更改为unit->FooStrategy(let create=fun()->…),并以Foo.SpecificFooStrategy.create()的形式调用,但没有任何帮助 代码 试验 name

F# 在f中格式化复合函数#

我在f#中有一个递归函数,它迭代需要运行的命令字符串[],每个命令运行一个新命令,以生成一个映射并传递给下一个函数 命令运行正确,但读起来又大又麻烦,我相信有一种更好的方法可以使用管道语法对这些复合函数进行排序/格式化,但是来自c#,正如我们很多人所做的那样,我似乎无法让它工作 我的命令是: let rec iterateCommands (map:Map<int,string array>) commandPosition = if commandPosition &

F#理论与自定义AutoFixture.InlineAutoData不';测试资源管理器中没有显示

我正试图使用xUnit2和AutoFixture在F#中编写一些单元测试,我遇到了一个问题。我有一个从InlineAutoData继承的自定义属性的理论,测试浏览器一直告诉我没有找到任何测试。如果我用事实属性替换理论属性,它仍然不起作用,但是如果我删除自定义的InlineData属性,测试就会被发现。在另一个项目中,测试是用F#编写的,但属性是用C#编写的 我发现这个StackOverflow问题似乎很相似,但它不能帮助我解决问题: 以下是单元测试声明: [<Theory>] [&l

F#命名约定是否禁止在不同的光盘中使用相同的名称。工会类型?

我在一个模块中有一个公共类型,该类型在另外两个有区别的联合类型中使用 为了方便起见,我给他们取了相同的名字。其他名称则不同。接下来,我将尝试制作一个在控制台中打印类型的助手 由于匹配案例中的类型不匹配,第一行无法编译。我尝试了一些方法,但无论是否打开模块、强制类型等等,它仍然失败 另一件事是,如果我把鬃毛改成Common1和Common2,它就可以正常工作 我记得读过,具有相同签名的类型存储在相同的内部类型中,但我的实际示例具有不同的签名,仍然失败 我是不是漏掉了一点 例如: 示例未能编译,出现

F#SQL数据访问最佳实践

几周前我开始学法语。我来自C#和命令式语言背景。 通常,在命令式语言中,可以看到企业应用程序中的3层(控制器、服务和存储库)。 显然,这不是功能设计。使用在DTO对象上执行的CRUD操作 我想知道如何在F#中以“纯”功能的方式实现/构建这样的应用程序 我把“纯”放在parentesis中,因为我在这个阶段不看IO单子。但以下是一些最佳实践: 没有可变状态 不要使用继承或接口/抽象类 尽可能多地使用模式匹配 尽可能将IO交互与逻辑分开 您是否曾在公司的F#中开发过这样的项目?您是如何组织您的项

F# 在F中键入名称作为标识符#

我刚开始学习F#,不小心写了这个绑定 let List = 1 现在,当我尝试获取列表方法(如“filter”)时,我得到了这个错误 错误FS0039:未定义字段、构造函数或成员“筛选器” 当然,使用诸如Microsoft.FSharp.Collections.List.filter之类的具有完整类型名的方法仍然有效 我想知道为什么可以在F#中使用类型名称作为标识符,以及如何将名称列表从Microsoft.FSharp.Collections设置为类型列表 当我试图这样重新分配任务时 type

F#:n元树提取单个元素并保存计算

给定树的类型: type id = int;; type tree = T of id * tree list;; let ex = T(12,[T(3,[T(4,[T(38,[])])]);T(23,[T(22,[])]);T(1,[])]);; 鉴于所有id都是唯一的,我希望从给定id中获得一棵树,如下所示: get 23 ex = t(23, [t(22,[])]); 到目前为止,我只能实现如下功能: let rec child c n = match c with

F# 这些设置从未更改(或在开始时仅更改一次)的模块属性?

我有下面的模块,基本上,参数yyyyMMdd,选项,和文件夹被传递给许多要使用的函数。它只会在主文件中分配/更改一次,或者不需要更新(文件夹,选项) 如何实现F#模块的“属性”,从而不需要让所有这些函数都具有这些参数 module X let a theDate x options = .... // aDate is used here let b theDate x folder options = a theDate 30 options //.... let c theDate f

F# 具有重复键的Map.ofSeq的行为是什么?

当同一个键出现两次时,Map.ofSeq的行为是什么 法院没有提到这个案件 让我们进行经验测试,并找出 这个例子: [("key", 1); ("key", 2); ("key", 3)] |> Map.ofSeq [("key", 3); ("key", 1);] |> Map.ofSeq 生成以下结果: map [("key", 3)] 鉴于此示例: [("key", 1); ("key", 2); ("key", 3)] |> Map.ofSeq [("key",

此';让';未完成,F#错误

我一直在尝试用F#创建一个可以通过另一个文件读取文本的代码,但是我一直看到一个错误 此“let”后面的块未完成。每个代码块都是一个表达式,必须有一个结果 在 let a = line.Split delim ,我查了一下,认为这是一个缩进错误,但这并不能解决这个问题。有什么建议吗 [<EntryPoint>] let main argv = let delim = ',' use stream = new StreamReader @"final.txt" let line

F# 为什么Async.RunSynchronously挂起?

在我的f#项目中,我调用了一个c#库,该库返回一个任务。当我在我的f#项目中尝试这样做时,什么都没有发生 let str = getName() |> Async.AwaitTask |> Async.RunSynchronously 但是,如果我将代码更新为使用异步workfolow,它将不再挂起。在异步调用Async.RunSynchronous时,我做错了什么 async { let! str = getName() |> Async.AwaitTask

F# 带有.netstandard 2.0项目的ProjectCracker

我的团队最近从使用.net framework转向使用.net标准2.0作为我们的F#库。我们在项目中运行了一些内部脚本来自动生成标记文档,这些脚本使用F#Compiler Services SDK来分析代码并检索类型元数据、文档注释等 我们正在使用FSharp.Compiler.Service.ProjectCracker库来读取.fsproj文件,并生成FSharpProjectOptions实例,以便在运行FSharpChecker.ParseAndCheckFileInProject方法

F#-模式匹配区分并集和访问对象';s属性

在F#tour中,我有一个例子 type Person = { First : string Last : string } /// A Discriminated Union of 3 different kinds of employees type Employee = | Engineer of engineer: Person | Manager of manager: Person * reports: List<Employee>

F# 使用工厂构造函数测试私有类型

我创建了一些基本类型,目的是不能创建无效状态。例如: type PositiveDecimal = private PositiveDecimal of decimal [<RequireQualifiedAccess>] module PositiveDecimal = let create num = if num >= 0m then num |> PositiveDecimal |> Ok

F# 如何使用FSharpx'从索引N中删除项;什么是持久向量?

我注意到来自FSharpX的PersistentVector没有remove at index方法 它可以在第n个位置修改项目,但不能删除它。这似乎是一个奇怪的遗漏。如果这是不可能的,那么有人可以建议另一个具有此功能的不可变持久集合 我当前从向量中删除at item at id的代码是暴力 state |> Seq.indexed |> Seq.where ( fun (_id,_)->id<&

F#并集情形参数化

我只是在看我的代码,我不确定是否有办法概括这些代码块: 我遇到的问题是,我对功能范式/F#比较陌生,我不确定是否有一种方法可以处理模式匹配/区分之外的联合案例。这个例子可能会问这样一个问题:如果它们遵循相同的逻辑,那么为什么它们是不同的情况,答案是,我正试图在一个联合中使用不同的情况来进行域描述;我仍然试图在创建一些通用模块的过程中找到平衡点,但要利用类型安全性来处理领域的特殊性。在本例中,我将从一个通用输入模块绑定此域使用的所有可能字段 从本质上讲,是否有某种方法可以将特定情况用作参数?它将如

F# 对需要等待时间的函数使用Async

这是函数中给我带来麻烦的部分。经过一些调试后,我已将此部分与我的主功能隔离: let testfunction view = printfn "Entry point: %s" view let df = ETS.getTimeSeries myrun.tsds (myrun.initiate2 "0019.HK" view defaultbegintime defaultendtime) "unusedlegacystring" printfn "I am here"

F# 按相反顺序逐行打印文档列表

因此,我正在进行这项任务,我必须撤销文件,但它没有按预期工作。如果我在这样的文件上运行代码 hello world 我会得到 dlrow olleh 但我真正需要的是: world hello 所以我需要一行一行地倒过来,但不是每个字母都倒过来。我不知道如何解决这个问题,所以我需要有人能把我推向正确的方向。我想我需要用我的“q”做点什么 我的代码是: let readFile (filename : string) : string option = try

F# 列表';递归除法#

看来,我需要我的递归函数的帮助,它没有被应用。我有一个例子,但我不明白我必须做什么。我的错在哪里?我很乐意为您提供任何帮助 我的职能: let rec split = function | [] -> ([],[]) | [x] -> ([x], []) | x :: y :: tail -> split ((fun z -> z)(fun acc -> (x :: fst acc, y :: snd acc))) tail let res = spli

F# FS0001应为;int32";,是";单位「;相反

首先,我是函数式编程和F#的完全初学者。我有点进入基本概念,我试图通过编写Mandelbrot集合程序来练习我的理解。 函数iterate应该取一个元组,对其进行迭代,如果退出条件infinity为med,它应该返回它所取的迭代次数i。否则它会使用更改的元组调用自己。 我收到以下错误:FS0001应该是“int32”,而不是“unit”第2行 编辑: mandelbrot获取一个元组并返回一个元组; infinity接受一个元组并返回一个整数 let rec iterate (a, b) :in

如何使用F#验证RSASA256 JWT签名?

我有一个简单的模块,它使用rsasa256(RS256)非对称加密创建JWT令牌 let getSigningCredentials(rsa:rsa)(algo)= 尝试 let key=RsaSecurityKey(rsa) let signingCredentials=签名凭证(密钥,算法) signingCredentials.CryptoProviderFactory 误差系数 let getSigningCredentialsSha256(rsa:rsa)= getSigningCre

F# Seq.map在f中发送记录时出错#

我试图读取一个文件employees.txt并输出一个payroll.txt文件。员工文件包含以下文本:H | 1111 | Jane Doe | 8.50 | 40.0 S | 2222 | John Doe | 0.10 | 1500.00。我正在尝试读取此文件,并输出相同的员工,但已进行薪资评估。问题是我不太理解File.ReadLines“employees.txt”背后的逻辑 |>Seq.map inputline_至_员工 |>Seq.map employee_to_outputli

上一页   1   2   3    4   5   6  ... 下一页 最后一页 共 201 页