有没有办法在模块之外模式匹配智能构造函数?
这样的事情:
import MyModule (thing)
fn (thing 3) = True
无法写下这个:
fn (Thing 3) = True
其中thing
是Thing
的智能构造函数。
答案 0 :(得分:7)
在MyModule
中定义并导出它:
extract :: Thing -> Int
extract (Thing x) = x
使用view patterns扩展程序:
{-# LANGUAGE ViewPatterns #-}
fn :: Thing -> Bool
fn (extract -> 3) = True