相关疑难解决方法(0)

F#隐藏的功能

这是类似C#问题的毫不掩饰的尝试.

那么你最喜欢的F#隐藏(或不是)功能是什么?

到目前为止,我使用的大部分功能并没有完全隐藏,但却非常令人耳目一新.就像C#或VB.NET相比,重载运算符是多么微不足道.

Async<T>帮助我削减了一些真正丑陋的代码.

我对这种语言还很陌生,所以了解野外使用的其他功能会很棒.

f# language-features hidden-features

23
推荐指数
9
解决办法
5572
查看次数

F#静态成员类型约束

我正在尝试定义一个函数,factorize,它使用类似于Seq.sum的结构类型约束(需要静态成员Zero,One,+和/),以便它可以与int,long,bigint等一起使用.I似乎无法获得正确的语法,并且无法在该主题上找到很多资源.这就是我所拥有的,请帮助.

let inline factorize (n:^NUM) =
    ^NUM : (static member get_Zero: unit->(^NUM))
    ^NUM : (static member get_One: unit->(^NUM))
    let rec factorize (n:^NUM) (j:^NUM) (flist: ^NUM list) = 
        if n = ^NUM.One then flist
        elif n % j = ^NUM.Zero then factorize (n/j) (^NUM.One + ^NUM.One) (j::flist)
        else factorize n (j + ^NUM.One) (flist)
    factorize n (^NUM.One + ^NUM.One) []
Run Code Online (Sandbox Code Playgroud)

generics f# functional-programming constraints

21
推荐指数
3
解决办法
3991
查看次数

F#是否具有通用算术支持?

F#是否与C#有相同的问题,你不能直接使用泛型T类型的算术运算符?

你能写一个通用的Sum函数来返回支持算术加法的任何值的总和吗?

generics math f# inline

19
推荐指数
2
解决办法
2498
查看次数

F#通用方法和运算符

到目前为止,我对F#中的类型推断给我留下了深刻的印象,但是我找到了一些它没有真正得到的东西:

//First up a simple Vect3 type
type Vect3 = { x:float; y:float; z:float } with 
  static member (/) (v1 : Vect3, s : float) = //divide by scalar, note that float
    {x=v1.x / s; y= v1.y /s; z = v1.z /s}
  static member (-) (v1 : Vect3, v2 : Vect3) = //subtract two Vect3s
    {x=v1.x - v2.x; y= v1.y - v2.y; z=v1.z - v2.z}
  //... other operators...

//this works fine
let floatDiff h (f: float -> float) x = …
Run Code Online (Sandbox Code Playgroud)

generics f# type-inference

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