假设我有以下代码(文本<>是速记,实际上不是代码的一部分):
data A = <something>
defaultA :: A
defaultA = <Really complicated expression of type A>
Run Code Online (Sandbox Code Playgroud)
现在我想要一个函数模式匹配defaultA,如下所示:
f defaultA = <case 1>
f _ = <case 2>
Run Code Online (Sandbox Code Playgroud)
但是,defaultA第一行变为新变量,而不是表示参数相等的条件defaultA.我知道实现我想要的最好的方式是:
f x | x == defaultA = <case 1>
f _ = <case 2>
Run Code Online (Sandbox Code Playgroud)
有谁知道更好的方法?