标签: diffsharp

F#Generic Math:如何使用op_GreaterThan编写函数

在F#中,如何编写泛型数学步骤函数?

(Oliver)Heaviside阶跃函数是函数,如果x为负,则返回零,否则返回一个.

以下是我到目前为止的尝试摘要:

// attempt 1:
let inline stepFct1< ^T when ^T : (static member op_GreaterThan: ^T * float -> bool) 
    >     (x:^T) : ^T = 
    //if (^T : (static member op_GreaterThan) (x 0.0) ) then x  //ouch fails also
    if  (>) x 0.0 then x
    else 0.0
Run Code Online (Sandbox Code Playgroud)

编译器说:错误FS0001:类型参数缺少约束'当^ T:比较'

// attempt 2:
let inline stepFct2<^T when ^T : (static member (>): ^T * ^T -> bool) > (x:^T) : ^T = 
    match x with 
    | x when x > …
Run Code Online (Sandbox Code Playgroud)

generics math f# diffsharp

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

标签 统计

diffsharp ×1

f# ×1

generics ×1

math ×1