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

Fil*_*und 2 haskell

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

像这样的东西:

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.

gde*_*ohn 7

在其中定义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)