Hatena::ブログ(Diary)

mizon dev

2012-03-23

QuasiQuotesの謎

TemplateHaskell及びQuasiQuotesの学習中。これらが凄いということは分かったのだけど、文法に謎の制約が。

QuasiQuotesの[xxx| ... |]xxx部分でモジュール名のプリフィックスを付けると、シンタックスエラーになってしまう。エラーメッセージから推測するに、リスト内包と解釈されてしまってるっぽい。

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}

import qualified Text.Hamlet as H

template :: a -> H.Html
template = [H.hamlet|
<html>
  <head>
    <title>hoge
  <body>
    <h1>fuga
|]

こういう風に普通にqualifiedしたいのに、エラーとは...。これが出来ない理由は何かあるんだろうか?折角の素晴らしい機能なのに玉にキズだ。