【发布时间】:2014-05-18 02:46:02
【问题描述】:
如何让这个 Haskell 代码进行类型检查?
aesonLensInterpreter :: String -> String -> Interpreter (Maybe Value)
aesonLensInterpreter input expr = do
setImportsQ [("Prelude", Nothing), ("Data.Map", Just "M"), ("Control.Lens", Nothing), ("Data.Aeson.Lens", Nothing), ("Data.Aeson", Nothing)]
set [languageExtensions := [OverloadedStrings]]
let interpExpr = "(" ++ (show input) ++ " :: String)" ++ expr
v <- interpret interpExpr (as :: ???)
return $ Just (toJSON v)
基本上,我希望用户输入任何可能的 Lens 表达式并将结果作为 ToJSON 实例。由于 Lens 表达式既可以返回 Values 也可以返回普通的 Haskell 类型,我很困惑。
【问题讨论】:
-
您能添加一些具体的示例输入吗?此外,代码格式被破坏。