が必要なチュートリアルを使用GHCを解析とtypecheckウ
質問
私はプロジェクトに取り組んでい解析ウコードです。を用いることにしたGHC構文解析の源推定の種類ではなく自分でコードされました。今、私に辿のHaddock docsでは遅い。なんだろうけど、日本人のチュートリアル?
編集:を明確にしてしまったんですhlint.書い自分を解析するツール実行時の特性ウコードでは、このように書い別のhlint.私が求めていたものがありますが、基本的には拡大のページをwikiページ GHCとしての図書館.
解決
アダムは、これはかなり厳しいそり滑りです。これまで2006年の発売以来、GHC APIがややunderdocumentedされています。私がお勧めすることはGHCのAPIを使用して書かれているいくつかの小さなアプリケーションを見つけようとすることです。依頼する適切な場所は、おそらくGHCユーザーのメーリングリストをrel="noreferrer"> href="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users"
そのようなプログラムはghctags
、GHCソースツリーに同梱されます。私は、元のバージョンを書きましたが、私はそれを、そこにお勧めすることはできません、私はもはやそれに従うことはできませんコードのように多くの足跡があります。私が言うことができる最高のは、それが従うのは難しいが、それは、少なくとものの小さなとフォローくらいするGHCの全てよりも簡単には難しいということです。
他のヒント
ああ!ドキュメントへのより良いエントリポイントが見つかりました: http://www.haskell.org /ghc/docs/latest/html/libraries/ghc-6.12.1/GHC.htmlする
私はこの例で wikipage に更新されます:
ここではparseModule、typecheckModule、desugarModule、getNamesInScope、およびgetModuleGraphを呼び出す示しています。これは、Haskellのプラットフォーム、GHC-6.12.1で動作します。
バグ:LIBDIRはハードコードされています。上記GHC-パスを参照。
--A.hs
--invoke: ghci -package ghc A.hs
import GHC
import Outputable
--import GHC.Paths ( libdir )
import DynFlags ( defaultDynFlags )
libdir = "/usr/local/lib/ghc-6.12.1"
targetFile = "B.hs"
main = do
res <- example
print $ showSDoc ( ppr res )
example =
defaultErrorHandler defaultDynFlags $ do
runGhc (Just libdir) $ do
dflags <- getSessionDynFlags
setSessionDynFlags dflags
target <- guessTarget targetFile Nothing
setTargets [target]
load LoadAllTargets
modSum <- getModSummary $ mkModuleName "B"
p <- parseModule modSum
t <- typecheckModule p
d <- desugarModule t
l <- loadModule d
n <- getNamesInScope
c <- return $ coreModule d
g <- getModuleGraph
mapM showModule g
return $ (parsedSource d,"/n-----/n", typecheckedSource d)
--B.hs
module B where
main = print "Hello, World!"
解析が最も重要なことであるならば、私はHaskellの-SRC-extsをお勧めします。それはHaskell98、拡張子の全体杭のすべてを解析し、非常に使いやすいです。