gpt4 book ai didi

f# - FSharp 事件模式的问题

转载 作者:行者123 更新时间:2023-12-02 00:11:06 24 4
gpt4 key购买 nike

我正在 FSharp 中解析代码引用并构建模式助手。在我尝试之前一切都很顺利

let (|BinaryFn|_|) fn (input:Expr) = 
function
| SpecificCall fn (_,_,l::r::[]) -> Some(l,r)
| _ -> None

let (|Multiply|_|) x =
function
| BinaryFn <@ (*) @> (l,r) -> Some(l,r)
| _ -> None

目的是拥有一个返回“左”和“右”的通用二元函数匹配器,然后创建专门的二元匹配器,例如 Multiple、Divide 和 Add and Subtract。

但是我在第二个模式上遇到错误

Error FS0001: Type mismatch. Expecting a     

'a -> 'b option

but given a

'a -> 'c -> (Expr * Expr) option

The type ''a option' does not match the type

''b -> (Expr * Expr) option' (FS0001) (Shambolics)

有人可以告诉我我应该在这里做什么吗?

最佳答案

这里的问题是 function 不仅对最后一个参数进行模式匹配,而且还添加了一个额外的参数(function 之间的组合有趣匹配)。从第一个模式中删除函数参数 input,您的问题将得到解决。

关于f# - FSharp 事件模式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com