F# fslex lexing javascript正则表达式

我正在尝试lex javascript正则表达式文本。它们以“/”开头,以“/”结尾(有时还有其他一些修饰语)。问题是确定它是否是正则表达式而不是除法运算符的唯一方法是读取“/”字符前面的标记 关于这一点,我们可以多读一点 事实上,我找不到任何关于如何获取上一个令牌的文档。希望这是可能的,有人能告诉我怎么做 谢谢。据我所知,没有办法获得之前的令牌(但我还没有尝试过,我很久以前就使用过FSLex)。我想您可以保留一个参数来指定最后处理的令牌,然后使用它来决定在找到“/”字符时要做什么 无论如何,您

F# 如何生成指数权重数组?

我试着做一个“展开”-(我想),从一个初始值开始,对它重复应用一些函数,然后得到一个序列作为结果 在本例中,我尝试从1.0开始,乘以.80,然后执行4次,最后得到一个数组=[| 1.0;0.80;0.64;0.512 |] VS2010说我以一种无效的方式使用了“I”,并且闭包无法捕获可变值,所以这个函数不能编译。有人能提出一个实际可行的干净方法吗?多谢各位 let expSeries seed fade n = //take see and repeatedly multiply it by

F# 在F中创建并使用函数注册表#

我在当前编写的程序中经常使用当前的代码模式: let test_titles = ["a_fault"; "b_fault"; "c_fault"] let tests: (unit -> 'component option) list = [a_fault; b_fault; c_fault] let test_registry = List.zip test_titles tests let apply_test (title, test) = test () |> Option

F# 这是否正确使用了模式匹配和活动模式?

我不熟悉F#和functional,正在编写一些HTML解析代码。我想从HTML文档中删除符合某些条件的元素。这里我有一个对象序列(HtmlNodes),希望从文档中删除它们 这是使用模式匹配的惯用方法吗?另外,由于HtmlNode.Remove()对原始HtmlDocument对象有副作用,是否有任何特定的方法来构造代码以使副作用变得明显,或者应该如何处理。对于代码,你可以随心所欲地迂腐 open HtmlAgilityPack let removeNodes (node : HtmlNod

F#IEvent.create

它去哪了 let triggerFindNext,findNextEvent = IEvent.create<EventArgs>() let triggerFindNext,findNextEvent=IEvent.create() 未定义字段、构造函数或成员“create” 也许我必须为它添加一些框架?IEvent.create函数已被弃用。创建事件的一种新方法是创建事件类型的实例。在最简单的情况下,您可以这样写: let evt = new Event<EventAr

F# 如何在出现函数最大值的列表中查找值

我不仅想找到应用于列表的函数的最大值(我只想使用list.maxBy),还想找到发生此情况时列表中的值。这感觉像是一个相当普通的操作,考虑到F#库的丰富性,我一点也不惊讶地发现它实际上已经可用了,但如果是的话,我似乎找不到它 为了举例说明,我希望能够映射一个列表domain和一个函数f let domain = [0 .. 5] let f x = -x * (x - 2) 至(1,1)(因为应用于列表中其他元素的函数小于1) 我第一次尝试这个: let findMaximum domain

F# 超载+;F中的运算符#

所以我有这个: open System open System.Linq open Microsoft.FSharp.Collections type Microsoft.FSharp.Collections.List<'a> with static member (+) (First : List<'a>) (Second : List<'a>) = First.Concat(Second) let a = [1; 2; 3; 4;

F# 字段、构造函数或成员';AsyncReadToEnd';未定义错误

我正在学习RX(反应式扩展),发现有人在将近一年前发布了一些代码,使用F#和RX制作了一个简单的webCrawler。我试着看看是否可以重复使用代码。我下载RX,创建一个F#windows应用程序,添加对System.Reactive的引用。我的IDE是VS2010终极版,RX版本是:1.1.11111。代码如下: #light open System open System.Linq open System.Collections.Generic open System.Net open Sy

F# 是否有其他惯用方法传递状态信息?

我需要处理毫秒时间范围内的一系列历史滴答数据。需要能够过滤特定时间段(小时、分钟等)的开始刻度。该序列的间隔可能大于跨度,因此必须将该间隔后的第一个记号选为开始记号,否则,开始记号是最接近相应时间跨度日历开始的记号 我首先想到的是以下stateful过滤函数opensTimespan:Timespan->(Timestamp->bool),它将每个间隔打开或间隔打开记号的Timespan ID捕获到一个闭包中,以便在调用之间传递: let opensTimespan (interval: Tim

F#矩阵乘法

我想把两个矩阵相乘 我使用的是这篇文章中的转置: 我还使用innerMult,它将两个列表中的每个元素相乘,然后将它们相加 let rec innerMult u v = match u, v with | [x], [y] -> x*y | u'::u, v'::v -> u'*v' + inner u v 所以使用这两个函数,我想尝试用行乘以列。当然,我假设两个矩阵都满足乘法的条件。也就是说,行必须等于列 矩阵乘法码: let multiply (xs, ys) =

F# 如何执行模块do块?

我需要在一个模块中进行一些设置,我想通过利用do块来完成这个设置。但奇怪的是,我的do块似乎从未被击中 更奇怪的是,如果我将模块代码加载到fsi中,它确实会被命中。以下是我的例子: Main.fs [<EntryPoint>] let main args = printfn "%b" TestNamespace.M.x 0 当我运行编译后的可执行文件时,我得到 >test.exe true 为什么没有抛出异常?如果我自己在FSI中运行模块,我会 In d

使用简单的groupby和count的f#类型提供程序

为什么这不是编译 open System open System.Data open System.Data.Linq open System.Linq open Microsoft.FSharp.Data.TypeProviders open Microsoft.FSharp.Linq open Microsoft.FSharp.Linq.RuntimeHelpers type dbSchema = SqlDataConnection<"Data Source=.;Initial Ca

F#能为管理不确定性提供什么?

在与现实世界对话的应用程序中,使用非确定性函数是不可避免的。明确区分确定性和非确定性是很重要的 Haskell有一个IO单子,它通过观察我们知道它之外的一切都是纯净的来设置不纯净的环境。这很好,如果你问我的话,当涉及到单元测试时,你可以知道他们的代码的哪一部分最终是可测试的,哪一部分不是 我找不到任何东西可以在F#中将两者分开。这是否意味着没有办法做到这一点?F#基于OCaml,与OCaml非常相似,它不是纯FP。我认为用这两种语言都无法实现你的目标 确定性和非确定性功能之间的区别不是F#型系统

F# 如何真正';开始';滑稽的

我在尝试开始使用FunScript时遇到了很大的困难,我非常喜欢F#->Javascript的想法,但对于如何使用如此美观的技术的大量信息/文档,我一直感到沮丧 问题是: FunScript项目(无主机)模板无法安装,因为在我尝试下载时VS说:“您需要安装Nuget”//Dah,我有Nuget,刚刚更新到最新版本。我正在使用VS2013 Ultimate。 我做了以下工作: 我创建了一个新的FSharp库项目,然后运行Package Maneger命令来获取所需的FunScript Libs:

F# 黑客攻击引用的程序集

我知道关于这个主题还有其他问题,例如: 。。但是,嘿,我对F#还不了解 我有一个F#项目(thelibrary),其中包含一些模块。此项目在解决方案资源管理器中引用所有必需的库。每个.fs文件都会打开模块中使用的库。F#项目编译正确 然后我有另一个F#项目,其中包含一个脚本。我参考了library和library本身使用的库。在脚本中,我用#r引用了库中的dll以及库中使用的所有库。然后我打开所有模块。 Intellisense说在我执行脚本之前一切正常 脚本返回错误: error F

F# 比较两个列表,采取不同的行动

如何惯用地做到这一点:给定一个物品列表,找出其中的一个物品是否符合另一个列表中的标准,如果它做了一个动作,如果它没有做另一个动作。我在C语言中看到过这样的代码,我想知道在F语言中该怎么做 下面是在F#中必须实现的代码: 让我们查找列表1列表2= 因为我在清单1中是这样做的 设mutable found=false 对于清单2中的k,请执行以下操作: 如果i=k,那么//如果条件等于 发现这就是我提出的解决方案: let findF list1 list2 = list1 |&g

F#类和结构中主构造函数的行为差异?

如果在Visual Studio Express 2013中尝试此类型定义,则会出现错误: type Foo(bar : int) = struct member x.bar = bar end 如果我将其更改为类,则不会出现任何错误: type Foo(bar : int) = class member x.bar = bar end 我得到的错误是: The member 'bar' can not be defined because t

F# 定义平方和而不定义参数

我想定义sumOfSquares,但不使用参数,而是依赖函数组合 下面是我的代码 let sumOfSquares = Seq.map (fun n -> n * n) >> Seq.sum 然而,我得到了以下错误 标准输入(80,5):错误FS0030:值限制。“sumOfSquares”的值 已推断为具有泛型类型 val sumOfSquares : ('_a -> int) when '_a :> seq<int> 这就行了。然而,我想看看我

F# 如何使用带有参数的函数的FSharpx TaskBuilder

我最近一直在用编程,尤其是its。现在我想知道是否有可能定义一个函数,它接受参数和结果。比如 let doTask(parameter:int) = let task = TaskBuilder(scheduler = TaskScheduler.Current) task { return! Task.Factory.StartNew(fun() -> parameter + 1) } match FSharpx.T

F# 在F中使用类型对象进行向下转换# 让o1=box SomeType() 设t=typeof

是否可以使用存储在其他对象(o1)中的类型信息向下转换(到某个类型)已装箱的对象(o1) 最终目标是对函数进行一种动态调用。 我正在映射中存储签名为FSharpFunc的函数: let o1 = box SomeType() let t = typeof<SomeType> //缺少协方差/逆变迫使我将其定义为obj: 设函数=映射 让我们调用f(pre:'pre-when'pre:comparison)(post:'post-when'post:comparison)= (unb

F# 如何在参数级别使用匹配,可能吗?警卫?

比如说 let When true d = d let foo = () |> When false 所以我不喜欢它的副作用,因为它是错误的:MatchFailureException 我知道我在这里有很好的副作用:let foo=if false,然后() 但警告此表达式的模式匹配不完整。告诉我可以添加所需内容。我只是不知道如何或是否可能?否则,为什么我甚至可以使用值作为参数 顺便说一句:我知道当bd=if然后d else()时我可以写,,但问题更一般 在haskell中添加了解释

F# FSharp复合列表

在F#中创建此“复合”列表的最干净、最简单的方法是什么 输入: [ 1; 2; 3; 4; 5 ] 期望输出: [ [1]; [1;2]; [1;2;3]; [1,2,3,4]; [1;2;3;4;5] ] 有很多方法,但我认为这是一个干净的方法: [1;2;3;4;5] |> List.scan (fun x y -> x @ [y]) [] |> List.tail 使用List.scan和最后的List.tail忽略第一个元素,这是一个空列表。

F# 单元测试:nunit.framework程序集未引用错误

我在玩F#中的单元测试。我正在运行Visual Studio 2013社区版。我创建了一个测试项目并安装了nunit2.6.4和fsunit1.3.0.1。我使用包管理器控制台。我在项目中添加了对库的引用,并在脚本文件中引用了DLL,并添加了open子句: #r @"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\packages\FsUnit.1.3.0.1\Lib\Net40\FsUnit.NUnit

F# 如何以函数方式编写alphabeta搜索函数(无可变变量)?

这个周末,我编程的乐趣是用F#编写一个300行的reversi程序。可能还需要几个周末才能找到如何使alphabeta搜索并行化的方法,这实际上超出了这个问题的范围 但我发现,我无法想出一些实现alphabeta函数的“纯功能”方法。即没有任何可变状态 有什么好主意吗 我唯一想到的是编写类似于Seq.foldUntil()函数的东西,其中累加器状态用于存储状态中的更改。可以通过传入的lambda函数取消 也许看起来像这样: let transformWhile<'t,'s,'r> (

F# 在F中将内联函数传递给内联函数#

有没有办法欺骗编译器将内联函数A作为内联函数B的参数,并创建一个不需要调用的大型内联函数 假设我们有一段代码定义如下: let inline action i = printfn "%d" i // printfn is for demo, originally some math let inline iter lo hi func = for i = lo to hi do func i iter 0 10 action 通常,内联函数不能作为函数传递(它们可以,但它们不再是内联,因为它们

F#Sql类型提供程序和Windows 10上的.NET Framework v4.0/4.5

我正在尝试使用F#编写一个应用程序,我需要访问一个Sql数据库。我正在尝试使用Sql类型提供程序,但在使用时: type schema = SqlDataConnection<ConnectionString="..."> 很多人似乎都明白这一点,但我看到的唯一解决方案是下载并安装适用于Windows 8.1的Windows软件开发工具包。我已经这样做了,选择了所有的选项(包括.NETSDK4.5),它似乎已经安装无误。但是,这并没有解决这个问题,当我查看程序和功能时,我可以看到安

F# 未为字段指定任何作业

我有以下代码: type Client = { Name : string; Income : int ; YearsInJob : int UsesCreditCard : bool; CriminalRecord : bool } type QueryInfo = { Title : string Check : Client -> bool Positive : Decision

F# 有没有办法从.fsx文件将HTML直接发送到FsLab日志中?

我想将一些html(从我的F#代码生成)发送到FsLab日志中,但似乎找不到正确的咒语来实现它 如果我的代码中有一个返回html代码段的函数,有没有一种方法可以让它直接进入页面而不被标记包围 let f () = """Some <b>bold</b> sample""" let htmlContent = f () 例如,我尝试过: (*** hide ***) type Html = Html of string #if HAS_FSI_ADDHTMLP

如何在Visual Studio 2017 RC中创建F#.Net核心控制台App

project.json不见了,我不太明白如何更改项目的编译器(语言)。创建控制台应用程序(.Net Core)将导致使用netcoreapp1.0刷新.csproj文件的新C#项目 如何使用Visual Studio 2017 RC创建面向netcoreapp1.0的F#Console应用程序?用于.NET Core的工具仍处于“beta”级阶段(即使对于C#来说,这也很慷慨),而对于F#来说,它甚至还没有达到那个级别 此时(只需在第一次RC“刷新”之后),使用命令行(dotnet new)几

F#将函数应用于列表树的每个节点中的值

我有一个类型为类型T的树,如果你还没有读过这个优秀的系列,你可能想读一遍;这将向您展示一组处理自递归数据结构(如树类型)的好方法。遍历树的一般规则是“在这个级别上做我需要做的事情,然后递归地调用子节点上的当前函数”。在这里,看起来是这样的: let rec treeMap f tree = match tree with | N (data, children) -> N (f data, children |> List.map (treeMap f

F# Azure AD、Angular 2和飞行前出现问题无效(重定向)

现在我在集成Angular 2和Azure广告方面不是很开心 重现错误的步骤: 我已经创建了一个Angular 2前端、Web API(suave.io)并部署了Azure 我已经在网站和Web API上设置了Azure广告 根据这篇文章: 我获得了无记名Azure广告代币(很棒) 然后我调用Web API,我得到 XMLHttpRequest无法加载/groups/。飞行前的响应无效(重定向) 这与这个问题有关 我的Angular 2代码如下: let headers = new Head

F# 如何在Fsharp的ResizeArray中进行比较?

如何按函数比较排序:cmp type Point = { x : float y : float } let s = ResizeArray<Point>() s.Add{x=1.1 ; y=1.1} s.Add{x=2.2 ; y=2.2} s.Add{x=3.3 ; y=3.3} s.Add{x=2.2 ; y=2.0} let cmp (A:Point) (B:Point) = A.x + A.y < B.x

F# JsonProvider<>;。根目录没有空值作为正确的值

我试图查询解析后的Json的结果,如果找不到,我想做些别的事情 [ { "orderId": 136, "quantity": 5, "price": 3.75 }, { "orderId": 129, "quantity": 9, "price": 3.55 }, { "orderId": 113, "quantity": 11, "price": 3.75 } ] 我的代码如下: type Or

自定义FsCheck任意类型在Xunit中被破坏,但在LINQPad和常规F#程序中工作

我正在尝试实现一个自定义的任意,它生成glob语法模式,如a*c?。我认为我的实现是正确的,只是在使用Xunit运行测试时,FsCheck似乎没有使用自定义的任意模式来生成测试数据。然而,当我使用LINQPad时,一切都按预期工作。代码如下: open Xunit open FsCheck type Pattern = Pattern of string with static member op_Explicit(Pattern s) = s type MyArbitraries

F# Visual Studio代码无法识别Microsoft生成工具

我在Visual Studio代码上使用Ionide时遇到困难,在遵循教程并重新安装后没有任何效果,一个问题仍然存在-这是Visual Studio代码找不到Microsoft Build tools 2013-我已在Microsoft网站上安装了扩展名和zip 编辑:尝试在VScode中运行f#时,系统会提示我安装MS build tools 2013 有什么想法吗 非常感谢, Elliot您是指MS build tools 2015吗?我不认为Ionide与MS Build tools 20

F# 如何将FsCheck生成器列表累积为单个值?

我编写了一个FsCheck生成器,它生成随机的glob语法模式(例如a*c?)以及与该模式匹配的随机字符串(例如abcd)。然而,我的解决方案使用了一个可变变量,对此我感到很惭愧。看看: open FsCheck type TestData = {Pattern: string; Text: string} let stringFrom alphabet = alphabet |> Gen.elements |> Gen.listOf |> Gen.map (Lis

F# 错误:在读卡器关闭时调用Read的尝试无效?

定义了以下类型 type DownloadedItem = { Period: DateTime; Name: string } with static member fromRdr(rdr:IDataReader) = { Period = rdr.GetDateTime 0; Name = rdr.GetString 1 } static member asSeq (rdr:IDataReader) = seq { while rdr.Re

F# 部分应用类型构造函数

我有一个类型,其构造函数包含两个参数: type Foo = Foo of int * int 我可以用(int,int)的元组来调用它 但在我的例子中,我想部分应用构造函数在管道中使用它 let someFunc param = calculateSomeInt param |> Foo 42 //error 但这是不可能的,因为构造函数不能以咖喱形式调用 有没有可能告诉F#我想要一个curry格式的构造函数,而不必定义一个新函数让fooCtr a b=Foo(a,

F# 如何使用FSharp中的FsCheck检查路径是否格式良好

我很难找到答案: 定义一个函数functionWF和functionPath,该函数接受一个FsTree并返回一个布尔值,用于检查给定的树作为文件系统的格式是否正确,以及路径(表示为字符串列表)的格式是否正确 格式良好的文件系统不能具有指向树中不同节点的相同路径 格式正确的路径不能包含名称为空的节点 下面a显示(字符串*FsTree)列表的类型FsTree=节点 下面是FsTree的一个示例: fsT = [Node ("f1", [Node ("f2", [])]); [Node ("f3",

F#:不过滤任何内容,只保留部分内容

关于如何有效分组/筛选列表/顺序的快速问题 仅筛选可选字段不是“无”的记录 删除“option”参数以简化未来的流程(因为没有筛选出任何流程) 团体(我相信这没有问题) 我使用的是最好的方法吗 谢谢 type tmp = { A : string B : int option } type tmp2 = { A : string B : int } let inline getOrElse (dft: 'a) (x: 'a option) = ma

F#以及如何使用泛型

嗨,我有一个函数,它应该返回一个通用值选项,它看起来像: let HandleHeaderConfirmation (client : TcpClient) (message : BaseFrame) (responseId : uint32, frameId: uint32) (isAcknowledgment : bool): Async<(Option<'TCommand> * TcpClient)> = async{ match isA

F# 使用接受字符串和列表的构造函数创建类型

我想用一个新的构造函数App扩展一个类型ExprTree(表达式树),该构造函数接受一个字符串和一个列表作为参数。下面是类型ExprTree: type ExprTree = | Const of int | Ident of string | Sum of ExprTree * ExprTree | Let of string * ExprTree * ExprTree 您在评论中发布的定义是正确的。您的评论版本为: type ExprTree = |

F# 如何从Avalonia.FuncUI中的事件获取单击位置

我试图找出如何从事件单击访问鼠标单击的指针位置。 我想出了类似的办法 [...] type State = { coords: Point list } type Msg = Click of Point let update (msg: Msg) (state: State) : State = match msg with | Click p -> { state with coords = p::state.coords }

如何为F#function'指定结果类型;谁的签名?

我对F#还是有点陌生,我看到自己在编译器无法正确推断类型时,正在努力处理一些函数签名。在下面的示例中,编译器认为TryParse的函数类型是string->string,因此我必须使用右侧的lambda创建此定义 type SocialAccount = | FacebookAccount | UnknownAccount type SocialAccount with static member TryParse:(string -> SocialAccount

F# F-取字符串的右半部分

我正在尝试编写一个函数,该函数使用字符串操作数的右半部分: let f(k:'string)= k.[..(k.Length/2)] 以下是错误消息: Microsoft (R) Build Engine version 16.2.32702+c4012a063 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. /home/runner/project/Program.fs(1,19): error

f#顶棚中的按钮延伸

我正在尝试在f#和天篷中进行常规按钮扩展 正如你所知,我们可以点击一个按钮,像这样在天篷 click (//button[contains(text(),'save')])[last()] 但我正试着做这样的事情 let _button value = sprintf "(//button[contains(text(),'%s')])[last()]" value let button value = _button value click button "s

F# Akka.NET:给远程演员的死信

我正在学习如何从另一台机器调用远程参与者。为了模拟两台不同的机器,我有一台主机,另一台是虚拟机(VM)。网络适配器设置为NAT,因为通过此设置,我可以从VM ping主机(我读到它应该设置为桥接,但ping命令超时) 除此之外,这是主机上的RemoteActor.fsx的代码 #r "nuget: Akka.FSharp" #r "nuget: Akka.Remote" open System open Akka.Actor open Akka.Con

F# 为什么在不满足条件时调用bot函数?

我已经编写了这个F#console应用程序(只有在满足条件的情况下-如果目录存在的话,才应该调用run方法): 开放系统 让转储(x:string)= 控制台写入线(x) 让validateDirectory目录funToCallWhenOk= 将(System.IO.Directory.Exists目录)与 |true->funToCallWhenOk |false->dump(sprintf在'%s'目录中出现问题) //如果System.IO.Directory.Exists目录存在,则

F# 使用Suave上传大文件?

我想用Suave上传文件。我知道小文件会自动写入/tmp文件夹,但我的文件太大,无法写入。我想做的是将它们作为流进行处理,并通过Suave服务器将它们发送到长期存储 这是我的服务器: #r“nuget:Suave” 开放系统 开放文雅 开放式插座 打开Suave.Sockets.Control 让config=defaultConfig let socketTask(连接:连接,httpResult:httpResult)= 插座{ printfn“已启动套接字任务” 使用流=新传输流(conn

F#对嵌套计算表达式的调用太多

这是一个进化的问题。我试图找出为什么在CE上运行State.exec时,会出现CEs不希望出现的嵌套行为。它似乎给他们打了很多次电话。以下是我所拥有的: type State=('s->'a*'s) 模块状态= //明确的 //让结果x:State=funs->x,s //不太明确,但能更好地与其他现有功能配合使用: 让结果x s= x、 让bind(f:'a->State)(m:State):State= //返回获取状态的函数 乐趣s-> //从m参数中获取值和下一个状态 设a,s'=ms

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