使用智能构造函数的模式匹配

时间:2016-04-22 22:32:48

标签: haskell

有没有办法在模块之外模式匹配智能构造函数?

这样的事情:

import MyModule (thing)

fn (thing 3) = True

无法写下这个:

fn (Thing 3) = True

其中thingThing的智能构造函数。

1 个答案:

答案 0 :(得分:7)

MyModule中定义并导出它:

extract :: Thing -> Int
extract (Thing x) = x

使用view patterns扩展程序:

{-# LANGUAGE ViewPatterns #-}

fn :: Thing -> Bool
fn (extract -> 3) = True