我不确定如何正确地使用这个词,如果有人对它有很好的名称,请让我知道。与Haskell typeclass中的类型匹配
我想写一个叫做Matchable
的类型类。这个想法是我有几种不同类型的正则表达式(RegExp a
,ComplexRegex a
)应该能够匹配输入。
所以,我想这一点:
class Matchable a where
-- regex, input, success
match :: a -> b -> Bool
但我真正想要的是解构的构造与类型构造变量什么的类型类:
class Matchable a where
-- regex, input, success
match :: (B a) -> [a] -> Bool
这样我可以有RegExp Char
和ComplexRegex Char
两者都匹配在String
上。有没有办法做到这一点?谢谢。
这并不完全清楚你想要什么。你可以提供一些类型的签名,用于你想抽象的不同情况下的“匹配”吗?例如'matchRegExp :: RegExp Char - > [Char] - > Bool','matchComplexReg :: ComplexRegex ...'等 – jberryman
您可能想要关联类型(更新,更详细)或fundeps(更老,更不详细),但它是很难说没有实际的代码 – hao
@jberryman和haoformayor看到亚历克的答案 - 几乎完全是 – tekknolagi