F# 线交点fsharp

F# 线交点fsharp,f#,f#-interactive,f#-3.0,F#,F# Interactive,F# 3.0,我在编写直线相交函数时遇到问题。这就是我到目前为止所做的: type Line = float*float let LinesIntersection x y = if x.a <> y.a then Some ((x.b - y.b)/(y.a - x.a), (y.a*x.b - x.a*y.b)/(y.a - x.a)) else None let l1 = (2.0,-3.0) let l2 = (-3.0, 2.0) let l3 =

我在编写直线相交函数时遇到问题。这就是我到目前为止所做的:

type Line = float*float

let LinesIntersection x y = 
    if x.a <> y.a then 
        Some ((x.b - y.b)/(y.a - x.a), (y.a*x.b - x.a*y.b)/(y.a - x.a))
    else None

let l1 = (2.0,-3.0)
let l2 = (-3.0, 2.0)
let l3 = (2.0, 4.0)

LinesIntersection l1 l2 |> printfn "%A"
LinesIntersection l1 l3 |> printfn "%A"
有什么帮助吗?

使用以下方法:

type Line = {a:float; b:float}

let LinesIntersection x y = 
    if x.a <> y.a then 
        Some ((x.b - y.b)/(y.a - x.a), (y.a*x.b - x.a*y.b)/(y.a - x.a))
    else None

let l1 = {a=2.0; b=3.0}
let l2 = {a= -3.0; b=2.0}
let l3 = {a=2.0; b=4.0}

LinesIntersection l1 l2 |> printfn "%A"
LinesIntersection l1 l3 |> printfn "%A"
type Line={a:float;b:float}
让线插入截面x y=
如果x.a.y.a那么
一些((x.b-y.b)/(y.a-x.a),(y.a*x.b-x.a*y.b)/(y.a-x.a))
没有别的
设l1={a=2.0;b=3.0}
设l2={a=-3.0;b=2.0}
设l3={a=2.0;b=4.0}
行第l1节l2 |>printfn“%A”
行第l1节l3 |>printfn“%A”

您希望做什么,例如
x.a
?元组没有
a
成员…他们可能希望将
声明更改为
type Line={a:float;b:float}
,并相应地将l1设置为l3:
让l1={a=2.0;b=-3.0}
我正在尝试获取作为tuplesDownvote返回的值。很抱歉,您从中获取代码并更改线型={a:double;b:double}Type line=float*float。你甚至都不想自己做什么。到底是什么问题?你几乎已经拥有了所有的东西。如果没有
行插入部分的类型注释,或者
x
y
上的模式匹配,我认为这是行不通的。运行它,你会看到它给出了
一些(-0.2,2.6)
type Line = {a:float; b:float}

let LinesIntersection x y = 
    if x.a <> y.a then 
        Some ((x.b - y.b)/(y.a - x.a), (y.a*x.b - x.a*y.b)/(y.a - x.a))
    else None

let l1 = {a=2.0; b=3.0}
let l2 = {a= -3.0; b=2.0}
let l3 = {a=2.0; b=4.0}

LinesIntersection l1 l2 |> printfn "%A"
LinesIntersection l1 l3 |> printfn "%A"