【问题标题】:Haskell Web FrameworkHaskell Web 框架
【发布时间】:2011-04-21 07:10:16
【问题描述】:

我正在使用 haskell 创建简单的 Web 应用程序。首先我在前面使用了 Snap,我能够运行应用程序,但我想向应用程序添加用户输入。
我找不到将用户输入参数获取到函数的方法。我该怎么做?

其他的,我也用了Happstack框架,我不能导入“Happstack.Server”。我使用 cabal 安装配置 Happstack。它已成功安装,但是当我尝试导入“Happstack.Server”时,它给了我一个错误:

<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:
...................

【问题讨论】:

  • 当我们在 web 框架中时,你检查过 yesod 吗?我个人的看法是,它看起来比 snap 和 happstack 一起更有希望 100 倍。为什么?因为它更活跃,所以我每周都会看到 Yesod 的每日推送和博客文章。链接:yesodweb.com
  • 1) ghc-pkg 列表 2) 如果:ghci >import Happstack.Server
  • thanxx 的回复,我尝试使用 yesod ,@Tarrasch 我无法安装 yesod,当我尝试安装时会出现配置错误
  • thaxx 回复@voidizard,我没有得到你在这里所说的,我尝试了 1) 一个它显示所有 ghci 包,2) 是什么???
  • 看看下面我的回答。似乎阴谋集团的包裹被弄乱了——这种情况经常发生。我使用 cabal-dev 在 sanbox 中创建新项目,而不影响全局包。如果您不想处理沙盒,只需尝试清除所有包,安装 cabal,然后安装 Happstack。它应该工作。但是,如果您不想经常这样做,请使用 cabal-dev 或 capri

标签: haskell happstack haskell-snap-framework


【解决方案1】:

Snap 的getParam 函数允许您获取用户指定的HTTP 请求参数。这些可以来自表单提交的帖子正文或来自查询字符串。例如,考虑以下代码:

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

如果我请求网址“myapp.com/mypage?foo=bar”,那么我会看到“bar”作为响应。如果我省略 "?foo=bar" 部分,那么它将返回 "no value"。

【讨论】:

  • thanxxx,我已经实现了这种不同的方式,
【解决方案2】:

1) 检查 Happstack 是否实际安装并暴露:

ghc-pkg list | grep Happstack

2) 如果你尝试在 ghci 中导入 Happstack.Server 会怎样?

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

4) Snap 和 Yesod 非常新,它们正在大力开发中,Happstack 很漂亮 稳定稳固。

5) 您使用的是什么操作系统?你是如何安装haskell的? Ubuntu + haskell 6.12 + Happstack 开箱即用

关于日志,似乎 cabal 包以某种方式搞砸了。我建议您从 .cabal 和 .ghc 中删除所有软件包,重新安装 cabal,然后按照此处的说明安装 cabal-dev:

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

然后享受 Happstack 的乐趣。有些人实际上使用卡普里,它也很管用。

【讨论】:

  • thanxx 的回复,我认为 Happstack 没有安装好。但是当我使用 >cabal install happstack 时,它说“没有要安装的包。所有请求的包都已经安装了。如果你想无论如何都要重新安装,然后使用 --reinstall 标志“我正在使用 fedora 13,使用 yum 安装
  • 如果你尝试在 ghci 中导入 Happstack.Server 会怎样?
  • Prelude> import Happstack.Server :找不到模块`Happstack.Server':它不是当前程序或任何已知包中的模块。这是正确的链接吗???
  • 链接正确。您的依赖项有问题。就个人而言,我通过以下方式解决 thouse 问题:1) 扫描 $HOME/.cabal 和 $HOME/.ghc 目录并重新安装 cabal,然后从 hackage 重新安装 cabal。之后您可能会安装 Happstack,它会起作用。如果你不想太频繁地做所有的 thouse 操作,最好使用 cabal-dev 工具制作沙箱来玩包而不影响系统。
  • 嗯,听起来很有趣,如果我删除 .ghc 是否需要再次安装 ghc??我认为链接对我不起作用,该网站上有视频,我不能没有看到任何与haskell相关的东西,非常感谢您的帮助,非常感谢,
【解决方案3】:

你的安装搞砸了。不幸的是,阴谋集团有时会这样做。

最好的办法是使用 'ghc-pkg unregister' 删除所有 happstack 包、hslogger 和 sendfile。确保它们已从用户和全局包数据库中删除。 (ghc-pkg 列表会告诉你安装了什么)。删除旧版本后,请执行 cabal 更新和 cabal 安装 happstack。那么事情应该会奏效。

“用户输入”是什么意思?你的意思是html表单?还是别的什么?

速成课程的这一部分可能会满足您的需求:

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

还可以使用带有 Happstack 的消化函子来获得类型安全的表单处理。不幸的是,这还没有很好的记录。虽然我相信 disgestive-functors 源代码确实包含一个有效的 Happstack 示例。

【讨论】:

  • thanxx,yha html 表单现在我找到了一种获取参数数据表单 url 的方法,
猜你喜欢
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
相关资源
最近更新 更多