私はHaskellを初めて使いました。関数の結果から値を取得する方法は混乱しています。私の場合は、Haskellのファイルを解析し、どのASTノードがどの行に表示されるのかを調べようとしています。これは、これまで私が持っているコードです:Haskell Objectからの情報の抽出
import Language.Haskell.Parser
import Language.Haskell.Syntax
getTree :: String -> IO (ParseResult HsModule)
getTree path = do
file <- readFile path
let tree = parseModuleWithMode (ParseMode path) file
return tree
main :: IO()
main = do
tree <- getTree "ex.hs"
-- <do something with the tree other than print it>
print tree
は、だから私はコメントを持っている行に、私はtree
として構文木を持っています。タイプがParseResult HsModule
のようです。私が欲しいのはちょうどHsModule
です。私は次のように私が探していますが機能だと思います:
extract :: ParseResult a -> a
いっそ、一般的なHaskellの機能
extract :: AnyType a -> a
たぶん私はここにハスケルに関する主要な概念が欠けていますか?
P.S.私は、これらのことを「対象」として考え、そこから「フィールド」にアクセスしようとすることは間違っていることを理解していますが、このようなことを一般的にどのように扱うか説明したいと思います。
'getData'は偽です。パースエラーを処理するには、 'error'を使うことは間違った方法です。 – dfeuer