我正在解析一些输入,对此我有类似的东西:
{-# LANGUAGE DataKinds, KindSignatures #-}
data InputKind = A | B | C
data Input (kind :: InputKind) =
InputA Char
| InputB Double String
| InputC Int String
然后我有我的解析功能:
parseA :: Parser (Either SomeError (Input 'A))
parseB :: Parser (Either SomeError (Input 'B))
parseC :: Parser (Either SomeError (Input 'C))
所以,我现在有兴趣写一些看起来像这样的东西:
parse :: Parser (Either SomeError (Input (kind :: InputKind)))
有什么方法可以让类型有意义吗?