generic-sop和lists,Data.Proxy等

时间:2017-05-19 15:20:01

标签: haskell

根据我在这里提出的问题的精神,(Generically) Build Parsers from custom data types? @danidiaz提供了一个非常有效的解决方案。

我想做更多这样的事情:如果fHasParser的实例,则f的列表也是HasParser的实例}。或者在Haskell中,那是

instance (HasParser f) => HasParser [f] where
  getParser = many' (getParser @f)

好吧,这不会编译。我收到以下错误消息:

  

错误:不在范围内:输入变量'f'

我不熟悉这些语言扩展的语法。特别是@Proxy的使用总是让我感到困惑。希望有人能告诉我在哪里可以找到最好的文档。

1 个答案:

答案 0 :(得分:2)

您需要ScopedTypeVariables

{-# LANGUAGE ScoperTypeVariables, UnicodeSyntax #-}

instance ∀ f . HasParser f => HasParser [f] where
  getParser = many' (getParser @f)

(ASCII语法instance forall f . HasParser ...也有效。)