Haskell Happstack.lite教程无法使用“编译”;非法类型签名:`String'&引用;
我一直在遵循Happstack.Lite教程:取得了很大的成功,但我似乎无法克服这个编译错误:Haskell Happstack.lite教程无法使用“编译”;非法类型签名:`String'&引用;,haskell,happstack,Haskell,Happstack,我一直在遵循Happstack.Lite教程:取得了很大的成功,但我似乎无法克服这个编译错误: $ ghc crashcourse.hs -o crashcourse [1 of 1] Compiling Main ( crashcourse.hs, crashcourse.o ) crashcourse.hs:52:21: Illegal type signature: `String' Perhaps you intended to use -X
$ ghc crashcourse.hs -o crashcourse
[1 of 1] Compiling Main ( crashcourse.hs, crashcourse.o )
crashcourse.hs:52:21:
Illegal type signature: `String'
Perhaps you intended to use -XScopedTypeVariables
In a pattern type-signature
有关守则:
echo :: ServerPart Response
echo =
path $ \(msg :: String) ->
ok $ template "echo" $ do
p $ "echo says: " >> toHtml msg
p "Change the url to echo something else."
上下文中的代码:(pragma对这个问题没有影响,添加它是为了解决其他问题)
非常感谢您的帮助 如happstack lite教程中所述,您需要以下pragma:
{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}
如果我添加
ScopedTypeVariables
它对我有效。只是为了澄清;我称之为“速成课程”,但这不是真正的快乐(速成课程:)干杯!正如你可能知道的,这里有一个n00b。我会看看我是否能让教程重新格式化pragmas位,因为我完全错过了这个语句。如果我必须添加所有这些pragma和include,我不认为Happstack.Lite特别轻。OverloadedStrings
非常常用于与文本相关的一切。所有web框架都使用它。Happstack Lite只是最常用的Happstack功能的子集。它并不是真的更轻。作为初学者,我也在尝试web框架。我使用Happstack而不是scotty或spock的原因在于可用的文档。
module Main where
import Control.Monad (msum)
import Happstack.Server (nullConf, simpleHTTP, ok, dir, path, seeOther)
main :: IO ()
main = simpleHTTP nullConf $
msum [ dir "hello" $ path $ \s -> ok $ "Hello, " ++ s
, seeOther "/hello/Haskell" "/hello/Haskell"
]
{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}