在這裏我問到的問題的精神,(Generically) Build Parsers from custom data types? @danidiaz提供了一個精美的解決方案。generic-sop和列表,Data.Proxy等
我想多做一件這樣的事情:如果f
是HasParser
的實例,f
的列表也是HasParser
的實例。或者在Haskell中,那就是
instance (HasParser f) => HasParser [f] where
getParser = many' (getParser @f)
好吧,這不會編譯。我收到以下錯誤消息:
error: Not in scope: type variable ‘f’
我不熟悉這些語言擴展的語法。特別是,使用@
和Proxy
總是讓我困惑不已。希望有人能告訴我在哪裏可以找到最好的文檔。
你意識到這是一個[類型的應用程序(https://ghc.haskell.org/trac/ghc/wiki/TypeApplication)(其沒有按在GHC-8.0之前根本沒有工作)? – leftaroundabout
是的,我知道這一點。我正在使用ghc 8.0.2來編譯代碼。 – user2812201