Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell Happstack.lite教程无法使用“编译”;非法类型签名:`String'&引用;_Haskell_Happstack - Fatal编程技术网

Haskell Happstack.lite教程无法使用“编译”;非法类型签名:`String'&引用;

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

我一直在遵循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 -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 #-}