2011-07-15 24 views

Respuesta

16

Aquí hay un ejemplo que muestra la mayoría de las cosas básicas, incluida la representación de URL tipadas.

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-} 

import Data.Text 
import Text.Blaze.Html.Renderer.String (renderHtml) 
import Text.Hamlet hiding (renderHtml) 

data Url = Haskell | Yesod 

renderUrl Haskell _ = pack "http://haskell.org" 
renderUrl Yesod _ = pack "http://www.yesodweb.com" 

title = pack "This is in scope of the template below" 

template :: HtmlUrl Url 
template = [hamlet| 
<html> 
    <head> 
     #{title} 
    <body> 
     <p> 
      <a [email protected]{Haskell}>Haskell 
      <a [email protected]{Yesod}>Yesod 
|] 

main = do 
    let html = template renderUrl 
    putStrLn $ renderHtml html 

Salida:

<html><head>This is in scope of the template below</head> 
<body><p><a href="http://haskell.org">Haskell</a> 
<a href="http://www.yesodweb.com">Yesod</a> 
</p> 
</body> 
</html> 
+0

Al intentar esto como está, me da este error de compilación ghc: http://pastie.org/2220259 si cambio el @ {} al # {} I get: http://pastie.org/2220261 – singpolyma

+0

Funciona bien ejecutarlo con 'runghc' usando' ghc 7.0.2' y 'hamlet 0.8.2'. ¿Cómo estás corriendo esto? El primer error se ve muy extraño. ¿Cómo terminaron los pragmas del lenguaje en el HTML? El segundo parece que solo tienes que eliminar algunas de las llamadas 'pack'. – hammar

+0

que estaba tratando de ejecutar ghc --make, trying runghc Tengo http://pastie.org/2220468 ghc 7.0.3 aldea 0.6.1.2 - oh, mi versión es bastante más antigua que la tuya. tal vez la sintaxis ha sido cambiada :( – singpolyma

3

Bueno, handwaving la prestación URL y hacer las cosas de la manera más estúpida que funciona, podemos utilizar esto:

hamVal = [$hamlet| 
<html> 
    <head><title>Test page 
    <body>Testing 
|] 

test :: ByteString 
test = renderHamlet (\_ _ -> "") hamVal 

que funciona como se esperaba. Me imagino que quieres hacer algo un poco más útil, pero el ejemplo trivial funciona bien así que es difícil decir más sin saber dónde estás teniendo problemas.

+0

Por lo tanto, tengo esto para compilar, pero sorprendentemente emite Página de prueba <body> Prueba en lugar del esperado convertido a html- – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/8611/">singpolyma</a></span> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">Ah, lo he descubierto. Aparentemente la aldea solía ser más como haml, y mi versión es esa vieja sintaxis – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/8611/">singpolyma</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">Cuestiones relacionadas</div> <ul class="relative_list"> <li> 1. <a href="http://es.uwenku.com/question/p-ciywrqya-x.html" target="_blank" title="Enlace a un archivo estático de Hamlet"> Enlace a un archivo estático de Hamlet </a> </li> <li> 2. <a href="http://es.uwenku.com/question/p-hfpajkic-a.html" target="_blank" title="Hamlet acceso automático a las variables en el alcance"> Hamlet acceso automático a las variables en el alcance </a> </li> <li> 3. <a href="http://es.uwenku.com/question/p-yuvtbvnk-bv.html" target="_blank" title="¿Qué tipo de sintaxis Haskell se usa en [$ parseRoutes |/Home GET |]?"> ¿Qué tipo de sintaxis Haskell se usa en [$ parseRoutes |/Home GET |]? </a> </li> <li> 4. <a href="http://es.uwenku.com/question/p-uugpmkfc-q.html" target="_blank" title="¿Cómo usar UTCTime en yesod sin errores ocultos en el módulo?"> ¿Cómo usar UTCTime en yesod sin errores ocultos en el módulo? </a> </li> <li> 5. <a href="http://es.uwenku.com/question/p-xjphnaux-bn.html" target="_blank" title="Excepciones en Yesod"> Excepciones en Yesod </a> </li> <li> 6. <a href="http://es.uwenku.com/question/p-ykhgqazh-be.html" target="_blank" title="cabal instalar Yesod falla?"> cabal instalar Yesod falla? </a> </li> <li> 7. <a href="http://es.uwenku.com/question/p-rhdmirql-k.html" target="_blank" title="Uso de SSL en Haskell"> Uso de SSL en Haskell </a> </li> <li> 8. <a href="http://es.uwenku.com/question/p-uoscwnpg-bm.html" target="_blank" title="Autenticación múltiple en Yesod?"> Autenticación múltiple en Yesod? </a> </li> <li> 9. <a href="http://es.uwenku.com/question/p-txqkwjtx-bh.html" target="_blank" title="Websockets en Yesod?"> Websockets en Yesod? </a> </li> <li> 10. <a href="http://es.uwenku.com/question/p-sntyshuj-bk.html" target="_blank" title="Sin puntos en Haskell"> Sin puntos en Haskell </a> </li> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4606349252"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <li> 11. <a href="http://es.uwenku.com/question/p-taekvpvy-bq.html" target="_blank" title="Uso excesivo deIntegral en Haskell"> Uso excesivo deIntegral en Haskell </a> </li> <li> 12. <a href="http://es.uwenku.com/question/p-fvskzksg-g.html" target="_blank" title="Uso de Cabal (Haskell)"> Uso de Cabal (Haskell) </a> </li> <li> 13. <a href="http://es.uwenku.com/question/p-urkmzsun-u.html" target="_blank" title="problemas para instalar yesod"> problemas para instalar yesod </a> </li> <li> 14. <a href="http://es.uwenku.com/question/p-asctmhbm-a.html" target="_blank" title="GHC cabal install hamlet falla con un error oscuro"> GHC cabal install hamlet falla con un error oscuro </a> </li> <li> 15. <a href="http://es.uwenku.com/question/p-vhadpdsw-h.html" target="_blank" title="Yesod Editable Table"> Yesod Editable Table </a> </li> <li> 16. <a href="http://es.uwenku.com/question/p-dfmsyhns-bc.html" target="_blank" title="Enchufes sin procesar en Haskell"> Enchufes sin procesar en Haskell </a> </li> <li> 17. <a href="http://es.uwenku.com/question/p-ssrzepqt-k.html" target="_blank" title="Uso de tipos de datos en Haskell"> Uso de tipos de datos en Haskell </a> </li> <li> 18. <a href="http://es.uwenku.com/question/p-apwhosgi-bv.html" target="_blank" title="¿Supero (supercompilador de Haskell) uso?"> ¿Supero (supercompilador de Haskell) uso? </a> </li> <li> 19. <a href="http://es.uwenku.com/question/p-palafocj-be.html" target="_blank" title="Uso correcto de ReadP en Haskell"> Uso correcto de ReadP en Haskell </a> </li> <li> 20. <a href="http://es.uwenku.com/question/p-pildlurr-be.html" target="_blank" title="Yesod eliminar cascada"> Yesod eliminar cascada </a> </li> <li> 21. <a href="http://es.uwenku.com/question/p-bswitojy-u.html" target="_blank" title="soluciones de gráficos para Yesod"> soluciones de gráficos para Yesod </a> </li> <li> 22. <a href="http://es.uwenku.com/question/p-hywiixbp-u.html" target="_blank" title="Visualización de imágenes generadas dinámicamente en Yesod"> Visualización de imágenes generadas dinámicamente en Yesod </a> </li> <li> 23. <a href="http://es.uwenku.com/question/p-seurajbw-be.html" target="_blank" title="Ejemplo de MongoDB para Yesod/Persistente"> Ejemplo de MongoDB para Yesod/Persistente </a> </li> <li> 24. <a href="http://es.uwenku.com/question/p-humflwsk-a.html" target="_blank" title="Formularios de Yesod con flujo de página"> Formularios de Yesod con flujo de página </a> </li> <li> 25. <a href="http://es.uwenku.com/question/p-xdfrfvcg-bt.html" target="_blank" title="N-queens en Haskell sin lista transversal"> N-queens en Haskell sin lista transversal </a> </li> <li> 26. <a href="http://es.uwenku.com/question/p-qyhtokwh-q.html" target="_blank" title="Sintaxis ¿Qué significa $$ en Haskell?"> Sintaxis ¿Qué significa $$ en Haskell? </a> </li> <li> 27. <a href="http://es.uwenku.com/question/p-okacubna-e.html" target="_blank" title="Aplicación Yesod independiente del nombre de host"> Aplicación Yesod independiente del nombre de host </a> </li> <li> 28. <a href="http://es.uwenku.com/question/p-cakhhlhj-g.html" target="_blank" title="Profundo puede apilarse con yesod"> Profundo puede apilarse con yesod </a> </li> <li> 29. <a href="http://es.uwenku.com/question/p-cstqhxvs-bm.html" target="_blank" title="¿Cómo uso una función de biblioteca Haskell?"> ¿Cómo uso una función de biblioteca Haskell? </a> </li> <li> 30. <a href="http://es.uwenku.com/question/p-enctbyaz-bv.html" target="_blank" title="Haskell IO Monad y uso de memoria"> Haskell IO Monad y uso de memoria </a> </li> </ul> </div> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1575177025"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img.uwenku.com/uwenku/script/side.js?t=1644592048471"></script> <script type="text/javascript" src="http://img.uwenku.com/uwenku/plugin/highlight/highlight.pack.js"></script> <link href="http://img.uwenku.com/uwenku/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="5415218910" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> Última pregunta </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://es.uwenku.com/question/p-uzqobwax-s.html" target="_blank" title="para() del ancho de paso de bucle"> para() del ancho de paso de bucle </a> </li> <li class="side_article_list_item"> 2. <a href="http://es.uwenku.com/question/p-ewjyedms-g.html" target="_blank" title="Interpolar superficie del cilindro 3D en Matlab"> Interpolar superficie del cilindro 3D en Matlab </a> </li> <li class="side_article_list_item"> 3. <a href="http://es.uwenku.com/question/p-manlleyv-bp.html" target="_blank" title="Personalizado MKOverlayView/no modificado MKPolygonView está recortado en ciertos niveles de zoom"> Personalizado MKOverlayView/no modificado MKPolygonView está recortado en ciertos niveles de zoom </a> </li> <li class="side_article_list_item"> 4. <a href="http://es.uwenku.com/question/p-ymbqxgpt-bx.html" target="_blank" title="Sidekiq, Capistrano, Sinatra se despliega para"> Sidekiq, Capistrano, Sinatra se despliega para </a> </li> <li class="side_article_list_item"> 5. <a href="http://es.uwenku.com/question/p-yzjsmozc-bm.html" target="_blank" title="aplanar el hash de ruby ​​en la matriz con las claves eliminadas"> aplanar el hash de ruby ​​en la matriz con las claves eliminadas </a> </li> <li class="side_article_list_item"> 6. <a href="http://es.uwenku.com/question/p-nhupujbv-bs.html" target="_blank" title="Eliminación de la propiedad heredada de un elemento (tamaño de caja)"> Eliminación de la propiedad heredada de un elemento (tamaño de caja) </a> </li> <li class="side_article_list_item"> 7. <a href="http://es.uwenku.com/question/p-ecvnpiaw-bt.html" target="_blank" title="conversión de char a fecha y hora"> conversión de char a fecha y hora </a> </li> <li class="side_article_list_item"> 8. <a href="http://es.uwenku.com/question/p-dyquysfl-bh.html" target="_blank" title="¿Hay una buena referencia para los argumentos de la línea de comandos de V8 al usar node.js"> ¿Hay una buena referencia para los argumentos de la línea de comandos de V8 al usar node.js </a> </li> <li class="side_article_list_item"> 9. <a href="http://es.uwenku.com/question/p-obwcnwuu-y.html" target="_blank" title="Conexión de Skype para Asterisk"> Conexión de Skype para Asterisk </a> </li> <li class="side_article_list_item"> 10. <a href="http://es.uwenku.com/question/p-npdktydw-x.html" target="_blank" title="¿Qué hace DbConnection.EnlistTransaction?"> ¿Qué hace DbConnection.EnlistTransaction? </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> Cuestiones relacionadas</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://es.uwenku.com/question/p-ciywrqya-x.html" target="_blank" title="Enlace a un archivo estático de Hamlet"> Enlace a un archivo estático de Hamlet </a> </li> <li class="side_article_list_item"> 2. <a href="http://es.uwenku.com/question/p-hfpajkic-a.html" target="_blank" title="Hamlet acceso automático a las variables en el alcance"> Hamlet acceso automático a las variables en el alcance </a> </li> <li class="side_article_list_item"> 3. <a href="http://es.uwenku.com/question/p-yuvtbvnk-bv.html" target="_blank" title="¿Qué tipo de sintaxis Haskell se usa en [$ parseRoutes |/Home GET |]?"> ¿Qué tipo de sintaxis Haskell se usa en [$ parseRoutes |/Home GET |]? </a> </li> <li class="side_article_list_item"> 4. <a href="http://es.uwenku.com/question/p-uugpmkfc-q.html" target="_blank" title="¿Cómo usar UTCTime en yesod sin errores ocultos en el módulo?"> ¿Cómo usar UTCTime en yesod sin errores ocultos en el módulo? </a> </li> <li class="side_article_list_item"> 5. <a href="http://es.uwenku.com/question/p-xjphnaux-bn.html" target="_blank" title="Excepciones en Yesod"> Excepciones en Yesod </a> </li> <li class="side_article_list_item"> 6. <a href="http://es.uwenku.com/question/p-ykhgqazh-be.html" target="_blank" title="cabal instalar Yesod falla?"> cabal instalar Yesod falla? </a> </li> <li class="side_article_list_item"> 7. <a href="http://es.uwenku.com/question/p-rhdmirql-k.html" target="_blank" title="Uso de SSL en Haskell"> Uso de SSL en Haskell </a> </li> <li class="side_article_list_item"> 8. <a href="http://es.uwenku.com/question/p-uoscwnpg-bm.html" target="_blank" title="Autenticación múltiple en Yesod?"> Autenticación múltiple en Yesod? </a> </li> <li class="side_article_list_item"> 9. <a href="http://es.uwenku.com/question/p-txqkwjtx-bh.html" target="_blank" title="Websockets en Yesod?"> Websockets en Yesod? </a> </li> <li class="side_article_list_item"> 10. <a href="http://es.uwenku.com/question/p-sntyshuj-bk.html" target="_blank" title="Sin puntos en Haskell"> Sin puntos en Haskell </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://es.uwenku.com/contact">Contactanos</a></li> <li>© 2020 ES.UWENKU.COM</li> <li><a target="_blank" href="https://beian.miit.gov.cn/">沪ICP备13005482号-4</a></li> <li><script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1280101193&web_id=1280101193"></script></li> <li><a href="http://www.uwenku.com/" target="_blank" title="优文库">简体中文</a></li> <li><a href="http://hk.uwenku.com/" target="_blank" title="優文庫">繁體中文</a></li> <li><a href="http://ru.uwenku.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.uwenku.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.uwenku.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.uwenku.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.uwenku.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.uwenku.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.uwenku.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.uwenku.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.uwenku.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.uwenku.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.uwenku.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f78a970f17b19a79fc477a3378096f29"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>