标签: f#

观看窗口不适用于F#

前段时间我注意到VS2012 for Web中的"Watch"窗口不适用于FSharp中的默认功能.例如,cos someValue不起作用,也没有在函数的开头插入let _cos = cos或使用的解决方法.该错误类似于"当前上下文中不存在cos"或"_cos在当前范围内无效"等.let _cos x = cos x_cos(someValue)

我应该更改某些设置还是这是一个意外的错误?当然,我可以声明我需要观察的所有结果,但这有点开销,这是非常不切实际的.我该怎么做才能解决这个问题?

f# visual-studio-2012

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

F#中读/写属性的最短声明

我需要一些公共属性,在C#中我会这样做.

public VendorOrderService { get; set; }
Run Code Online (Sandbox Code Playgroud)

F#中此类属性的最短(正确/惯用)语法是什么?

member val VendorService = Unchecked.defaultof<VendorOrderService> with get, set
Run Code Online (Sandbox Code Playgroud)

PS我明白公共财产不是F#的超级惯用语.但是这段代码适用于较大的.NET项目,所以这些属性是强制性的.

f# c#-to-f#

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

如何通过值来进行递归区分联合?

在F#中,是否可以根据类型和值来区分联合?

这是在不知道语法应该是什么样的情况下尝试表达这一点.

type Foo =
    | A of int * Foo
    | B of string where B.name = "1" * Foo
    | C of string where C.name = "2" * Foo
    | Empty
Run Code Online (Sandbox Code Playgroud)

f#

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

为什么FSharp交互允许mutable let?

在FSI我输入

> let a = 10;;

val a : int = 10

> let a = a + 1;;

val a : int = 11
Run Code Online (Sandbox Code Playgroud)

看起来我在这里有一个可变变量?我错过了什么吗?

f# read-eval-print-loop

0
推荐指数
2
解决办法
223
查看次数

使用"\"作为关系运算符

有没有办法使用"\"作为固定关系运算符?就像是:

let \ y x = if x % y = 0 then true else false
Run Code Online (Sandbox Code Playgroud)

f# operators

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

找到链表F#的总和

如何使用F#中的函数找到链表的元素总和?

.net f#

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

匹配中的函数类型推断

请问,有人可以解释为什么这里的函数类型被推断为字符串 - >字符串?

let myFunc a:string = 
    match a with 
    | "A" -> 1
    | _ -> 0
Run Code Online (Sandbox Code Playgroud)

当参数是通用的时,这种方法很好,但是一旦我添加:string,类型就会改变.为什么?

编辑: 我想声明参数类型是一个字符串,因为我实际上想要使用String.ToUpper()进行匹配:

let myFunc a:string = 
    match a.ToUpper() with 
    | "A" -> 1
    | _ -> 0
Run Code Online (Sandbox Code Playgroud)

有点尴尬的解决方案就是这样

let myFunc a = 
    match a.ToString().ToUpper() with 
    | "A" -> 1
    | _ -> 0
Run Code Online (Sandbox Code Playgroud)

但我真的知道这将是一个字符串

f#

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

F#函数返回几种类型(返回通用对象类型)?

我继续学习F#模式匹配我的简单函数,如果参数是数字,则返回平方根,否则返回参数.我修改了一下它看起来如下.

let my_sqrt (o: obj) =
  match o with
  | :? float as d -> (sqrt d).ToString()
  | _ as x -> x.ToString()
Run Code Online (Sandbox Code Playgroud)

它适用于我的目的,但如果我不想将返回值转换为字符串怎么办?如何返回"某个对象"然后在printfn "%A" (my_sqrt [| 1; 2; 3 |])构造中使用它?

f# pattern-matching

0
推荐指数
2
解决办法
1085
查看次数

数组类型可以直接替换序列类型吗?

以下代码有效.

Seq.iter (printfn "%d") [|1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]
Run Code Online (Sandbox Code Playgroud)

这是另一个例子.http://msdn.microsoft.com/en-us/library/ee340408.aspx

数组类型可以直接替换序列类型吗?

f# sequence

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

如何修复此F#3.0报价错误

我下载了一个Github项目,在VS 2012中打开它后,进行了自动升级.我收到一个我不明白的错误.它与报价有关.

这是我复制粘贴的文件:https://github.com/dmitry-a-morozov/fsharp-wpf-mvc-series/blob/master/Chapter%2012%20-%20BindingMicroDSL/BindingMicroDSL/StockPricesChart.fs

错误是"引用可能不涉及分配或获取捕获的本地变量的地址"

违规代码是这个关键和价值:

this.Control.DetailsName, <@@ stockProperty.Key @@>

this.Control.DetailsValue, <@@ stockProperty.Value @@>

namespace FSharp.Windows.Sample

open System.Windows.Data
open System.Drawing
open System.Windows.Forms.DataVisualization.Charting
open System.Collections.ObjectModel

open FSharp.Windows
open FSharp.Windows.UIElements

[<AbstractClass>]
type StockPricesChartModel() = 
    inherit Model()

    abstract StocksInfo : ObservableCollection<StockInfoModel> with get, set
    abstract SelectedStock : StockInfoModel with get, set

type StockPricesChartView(control) as this =
    inherit PartialView<unit, StockPricesChartModel, StockPricesChartControl>(control)

    do 
        let area = new ChartArea() 
        area.AxisX.MajorGrid.LineColor <- Color.LightGray
        area.AxisY.MajorGrid.LineColor <- Color.LightGray        
        this.Control.StockPricesChart.ChartAreas.Add area
        let series = 
            new Series(
                ChartType …
Run Code Online (Sandbox Code Playgroud)

f# f#-3.0

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