Drkcore

08 10 2012 Haskell Tweet

Template Haskellと準クォートのお勉強

Template Haskellと準クォートの違いがわからないというか全体的にぼやけた理解というかあまり理解していなかった(THの説明見ているとTH=QQみたいな印象を持ってしまうので区別がつかない)ので、3連休の最終日はTHってた。

ちょっと前にモナド内包表記で遊んでいたので、

[|...|]

とかいう記法はなんかの型に入っているイメージが湧いてくる。

  • Template Haskell とは、Haskell でコンパイル時メタプログラミングを行うための仕組み
  • [$foo| ... |] が準クォート記号で、foo が囲まれた部分を処理するパーサーになります。クォートではなく、準クォートと呼ばれるのは、内部の変数を展開できるからです
  • Template Haskell の準クォートって「括った部分を文字列としてまるっと渡すから自前でパーサ書いてね!」って仕組み

要するにLispに例えるとTemplate Haskellはマクロで準クォートがリーダーマクロだという感じの理解で良いのだろうかね。

ProductName On Lisp
ポール グレアム
オーム社 / 3990円 ( 2007-03 )


About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021