Haskell Web Framework



我正在使用haskell创建简单的web应用程序。首先,我在前面使用了Snap,并且我能够运行应用程序,但是我想在应用程序中添加用户输入。我找不到让用户输入参数到函数的方法。我该怎么做呢?

另外,我也使用了Happstack框架,我不能导入"Happstack. server"。我使用cabal安装配置Happstack。它已成功安装,但当我尝试导入到"Happstack. exe"时。,它给了我一个错误:

<no location info>:
Could not find module `Happstack.Server':
  it is not a module in the current program, or in any known package.

如果我使用ghc --make HelloWorld.hs -v运行我的程序,我得到:

Glasgow Haskell Compiler, Version 6.12.1, for Haskell 98, stage 2 booted by GHC version 6.12.1
Using binary package database: /usr/lib/ghc-6.12.1/package.conf.d/package.cache
Using binary package database: /home/udeshika/.ghc/i386-linux-6.12.1/package.conf.d/package.cache
package happstack-6.0.0-0f0c2507d590ebd01e8601c8667ec809 is unusable due to missing or recursive dependencies:
  happstack-ixset-6.0.0-4e1b5476a551c4501c5734b22e0b280d happstack-server-6.0.3-6d71e7bb09489130538fb851a694b927 happstack-state-6.0.0-0e753e61d7092b6a5139e473113877a1 happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c
package happstack-ixset-6.0.0-4e1b5476a551c4501c5734b22e0b280d is unusable due to missing or recursive dependencies:
  happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c
package happstack-server-6.0.3-6d71e7bb09489130538fb851a694b927 is unusable due to missing or recursive dependencies:
  happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9 network-2.2.1.7-72dad7eb07ee7a683982f7475b8a449f network-bytestring-0.1.3.4-937fd511949a2d5ef21e86ec5306c791 sendfile-0.7.3-137cf51cc81a277d724637a7cd1e6b09
package happstack-state-6.0.0-0e753e61d7092b6a5139e473113877a1 is unusable due to missing or recursive dependencies:
  happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9
package happstack-util-6.0.0-4156bd1331b7a0d62e0087101c9eba1c is unusable due to missing or recursive dependencies:
  hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9 network-2.2.1.7-72dad7eb07ee7a683982f7475b8a449f
package hslogger-1.1.4-90c801c802eec92e4e6a6f83d24d58d9 is unusable due to missing or recursive dependencies:
...................

Snap的getParam函数允许您获取用户指定的HTTP请求参数。它们可以来自表单提交的post主体,也可以来自查询字符串。例如,考虑以下代码:

site = dir "mypage" pageHandler
pageHandler = do
    val <- getParam "foo"
    writeBS $ maybe "no value" id val

如果我请求url "myapp.com/mypage?foo=bar",那么我将看到"bar"作为响应。如果我去掉"?"Foo =bar"部分,则返回"no value"

1)检查Happstack是否已经安装和暴露:

ghc-pkg list | grep Happstack

2)如果您尝试导入Happstack怎么办?

3)最好使用cabal-dev或capri来安装这些东西并制作沙盒

4) Snap和Yesod是一个相当新的,他们正在大力开发,Happstack是漂亮的

你用的是什么操作系统?你是如何安装haskell的?Ubuntu + haskell 6.12 + Happstack开箱运行

关于日志,似乎阴谋的包是混乱的不知何故。我建议您删除.cabal和.ghc中的所有包,重新安装cabal,然后安装cabal-dev,如下所示:

http://www.reddit.com/r/haskell/comments/f3ykj/psa_use_cabaldev_to_solve_dependency_problems/

,然后玩Happstack。有些人甚至用capri,它也很好用。

您的安装一团糟。不幸的是,cabal有时会这么做。

你最好的选择是使用'ghc-pkg unregister '删除所有的happstack包,hslogger和sendfile。确保从用户和全局包数据库中删除它们。(ghc-pkg列表将显示已安装的内容)。一旦你有旧版本删除,做,cabal更新和cabal安装happstack。然后事情就会起作用。

你说的"用户输入"是什么意思?你是说html表单吗?还是别的?

速成班的这一部分可以满足您的需求:

http://www.happstack.com/docs/crashcourse/RqData.html

也可以在Happstack中使用消化函子来获得类型安全的表单处理。不幸的是,这还没有很好的文档记录。虽然我相信消化函数的源代码确实包括一个工作的Happstack示例。

相关内容

  • 没有找到相关文章

最新更新