【发布时间】:2016-01-15 22:22:24
【问题描述】:
我开始通过使用 Haskell 和 Yesod 开发 Web 应用程序这本书来学习 Yesod。安装一些要求后,本书让您做的第一件事是写一个Hello World! 尽管从书中逐字复制程序,但我遇到了解析错误。作为一点背景知识,我没有 web 开发经验,而且我对 Haskell 的了解几乎包含在 Learn You a Haskell 中,所以我很迷茫。
代码如下:
-- hello world with Yesod
{-# LANGUAGE TemplateHaskell, TypeFamilies, QuasiQuotes, MultiParamTypeClasses,
OverloadedStrings #-}
import Yesod
data HelloWorld = HelloWorld
mkYesod "HelloWorld" [parseRoutes |
/ HomeR GET
|]
instance Yesod HelloWorld
getHomeR :: Handler RepHtml
getHomeR = defaultLayout [whamlet | Hello World! |]
main :: IO()
main = warpDebug 3000 HelloWorld
编译器告诉我这个:
C:\Haskell\Yesod>runhaskell helloWorld.hs
helloWorld.hs:11:1:
parse error (possibly incorrect indentation or mismatched brackets)
【问题讨论】:
-
这只是一个疯狂的猜测 - 但您是否尝试过将第 11 行 (
/ HomeR GET) 缩进至少 2 个空格 - 或者将mkYesod直到|]放在一行中? -
只是猜测:尝试使用
[parseRoutes|而不是[parseRoutes |(没有空格)?
标签: haskell yesod parse-error