有没有办法在模块之外模式匹配智能构造函数?
像这样的东西:
import MyModule (thing)
fn (thing 3) = True
Run Code Online (Sandbox Code Playgroud)
无法写下这个:
fn (Thing 3) = True
Run Code Online (Sandbox Code Playgroud)
哪里thing是一个聪明的构造函数Thing.
在其中定义MyModule并导出它:
extract :: Thing -> Int
extract (Thing x) = x
Run Code Online (Sandbox Code Playgroud)
使用视图模式扩展名:
{-# LANGUAGE ViewPatterns #-}
fn :: Thing -> Bool
fn (extract -> 3) = True
Run Code Online (Sandbox Code Playgroud)