F# 是什么导致断点无法绑定?
是什么导致断点无法绑定? 我在尝试执行以下表达式时收到错误:F# 是什么导致断点无法绑定?,f#,conways-game-of-life,F#,Conways Game Of Life,是什么导致断点无法绑定? 我在尝试执行以下表达式时收到错误: let grid_1 = { grid with Four= grid |> update };; // Updated here 我收到的错误如下: 代码: type State = Alive | Dead type Response = | Survives | Dies | Resurected type Grid = { Zero:State
let grid_1 = { grid with Four= grid |> update };; // Updated here
我收到的错误如下:
代码:
type State = Alive | Dead
type Response = | Survives
| Dies
| Resurected
type Grid = { Zero:State
One:State
Two:State
Three:State
Four:State // Central
Five:State
Six:State
Seven:State
Eight:State }
let isUnderPopulated (grid:Grid) =
let zero = if grid.Zero = Alive then 1 else 0
let one = if grid.One = Alive then 1 else 0
let two = if grid.Two = Alive then 1 else 0
let three = if grid.Three = Alive then 1 else 0
let four = if grid.Four = Alive then 1 else 0
let five = if grid.Five = Alive then 1 else 0
let six = if grid.Six = Alive then 1 else 0
let seven = if grid.Seven = Alive then 1 else 0
let eight = if grid.Eight = Alive then 1 else 0
let livingCount = zero + one + two + three + four + five + six + seven + eight
livingCount < 2
let grid = { Zero = Dead
One = Dead
Two = Dead
Three = Dead
Four = Dead
Five = Dead
Six = Dead
Seven = Dead
Eight = Dead }
let update (grid:Grid) =
let underPopulated = grid |> isUnderPopulated
if underPopulated then Dead
else Alive
let grid_1 = { grid with Four= grid |> update };; // Updated here
type State=Alive | Dead
类型响应=|生存
|死亡
|复活
类型Grid={Zero:State
一:国家
二是国家
三:国家
四:州/中央
五:国家
六:国家
七:国家
八:国家}
let Is人口不足(网格:网格)=
让零=如果网格。零=活动,则1=其他0
让一个=如果网格。一个=活动,然后1个=其他0
让两个=如果网格。两个=活动,那么1个=0
让三个=如果网格。三个=活动,那么1个=0
设四=如果网格。四=活动,则1=其他0
设五=如果网格。五=活动,则1=其他0
设六=如果网格。六=活动,则1=其他0
设七=如果网格。七=活动,则1=其他0
设8=如果网格。8=活动,则1=其他0
让livingCount=0+1+2+3+4+5+6+7+8
活细胞计数<2
设grid={Zero=Dead
一个=死了
2=死亡
三=死
四个=死亡
五个=死亡
六=死
七=死
八=死亡}
让我们更新(网格:网格)=
设人口不足=网格|>为人口不足
如果人口不足,则死亡
还活着吗
让grid_1={grid with Four=grid |>update};;//在此更新
您可能试图将断点绑定到过期的应用程序,这意味着在进行更改之后,在重新编译之前。
尝试:
- 在调试模式下编译
- 在设置断点之前,请尝试清理解决方案
- 转到调试文件夹,删除[Your application].pdb文件
- 然后构建或重建应用程序
- 转到调试文件夹并确认您有一个全新的[您的 应用程序].pdb文件
- 然后试着设置你的断点
- C++/通用/调试信息格式:程序数据库
- C++/优化:已禁用
- C++/代码生成/运行库:多线程调试
- 链接器/调试/生成调试信息:是
- 链接器/调试/生成程序数据库: $(TargetDir)$(TargetName).pdb
- 链接器/清单文件/生成清单:否
- 链接器/清单文件/允许隔离:否
- 链接器/嵌入式IDL/忽略嵌入式IDL:是
- 在项目属性集中,生成/常规/优化代码:禁用
- 在IDE设置中,Debug/Options/Debug/General抑制JIT 模块负载优化(仅限托管):已启用
如果您运行的是Win 10操作系统,则在构建14251中存在与此问题相关的报告错误。这在14257(及以上)版本中得到解决 这是关于函数式编程的一般性评论,但由于它与您的问题有着显著的联系,我将提及它。在函数式编程中使用状态越多,就越需要使用调试器。我在函数式编程中使用状态的次数越少,就越不需要使用调试器。经过几个月的函数式编程,没有使用state,我不再需要调试器了。在六个月的时间里,我从未在函数式编程中使用过调试器。只有在再次使用state之后,我才需要一个调试器。是的,事情可以是有状态的,但它们使用的函数不是。解决这一问题的一种方法是传递参数中更改的所有状态,该参数通常在代码中命名为
env
或world
。通常情况下,env
可能以几个单独的变量开始,但随后将它们组合成一个元组,并将其命名为env
。另一种方法是将其编码为OO,可能是C#,其中使用状态进行思考,然后使用F#将其重构为函数。在此过程中,您将看到什么真正需要保持为状态,以及可以做些什么来更改您的设计。正如我所指出的,当我必须添加状态和OO(如属性、成员、接口、,等等。我发现没有状态的问题的方法是找到其他编程语言的函数式编程书籍,例如ML、OCaml、Haskell,并将它们翻译成F#。但是使用数组代码要短得多,更容易让人阅读let gridWithArray=Array.create 9 Dead
那么isubpopulated可以重写为:let isubpopulated Array value=(Array |>Array.filter((=)Alive)|>Array.length)
这通常是某种优化,我只在运行时看到类似的错误(编辑器通常只是拒绝绑定断点并将其移动到另一行)-有时如果使用C#项目,它可能没有编译,因此会丢失绑定,我认为这是错误的