问题标签 [haskell-snap-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
104 浏览

haskell - Snap:正确使用 PreRun 钩子

我无法弄清楚如何在任何模板加载之前运行一个函数。例如:我有一个名为“authenticate”的函数,它返回一个 Maybe 值。我想在加载任何模板之前运行它,然后有条件地重定向。我相信 PreRun 和 OnLoad 钩子应该这样做,但我不知道如何使用它们。

有人可以展示这些钩子的正确用法来实现上述示例吗?

谢谢

0 投票
2 回答
236 浏览

haskell - 在 Snap 中使用“runghc”而不抛出 webhandler 异常。使用 tryIO 仍然会报错

我试图在 snap 中使用 runGHC 来过滤掉可以编译的代码。但是,我正在使用 tryIO,但是当出现编译错误时,我的 webhandler 仍然会引发异常,而不是只返回一个空字符串。

但是,如果我传递无法编译的“内容”,我的处理程序将失败并显示

或任何编译器错误。我认为tryIO应该捕获异常。

0 投票
2 回答
189 浏览

haskell - 全新安装期间的 Snap 框架编译错误

第一次安装 Snap 时收到以下错误。我试过先安装抢劫但得到同样的错误。我正在使用 Ubuntu 12.04 32 位桌面(全新安装)和 ghc 7.4.1。

其他人得到这个错误吗?解决方案?谢谢。

0 投票
2 回答
333 浏览

haskell - 如何使用 Haskell 进行子域路由

使用使用 snap 的 Hakyll 我开始在路由服务器上工作。鉴于他们教程中的以下代码,我可以看到路由,但我希望在他们自己的子域上拥有一些不同的应用程序,例如 oneapp.mysite.com。这可以使用 snap 或任何其他 Haskell 服务器吗?

0 投票
1 回答
295 浏览

haskell - Snap 框架 - 重复可能会整理

我正在将我(有限的)Haskell 知识应用到 Snap Web 框架中,看看我能构建什么。我正在尝试获取一个(可能不存在的)参数并将其解析为一个 int。显然“也许”是我想要的。

在下面的代码中AppHandler定义为Handler App App(我认为具有两个状态级别的 monad,尽管我现在在教程中找不到任何东西)。B8ByteString.Char8readInt返回_Maybe(Int,ByteString)

下面的代码有效,但大概应该有一种方法将可能的调用链接在一起(大概是通过MaybeT,因为我已经在 Monad 中了)。链接特别有意义,因为下一步将根据解析的 id 从数据库中获取一行,所以当然这也会返回一个“Maybe a”。显然,这是一种非常普遍的模式。

我尝试应用 runMaybeT 但坦率地说,我没有真正了解需要更改的类型,我正在随机更改以希望错误消失。它没有,尽管它改变并从一行到另一行移动。

我将此视为进步,因为我现在完全迷失在一个比我开始探索 Haskell 时更高的水平......


编辑:遍历kosmikus的答案,希望我已经理解了...

我想我正试图朝着这个方向努力,但一直试图getParam在与其他步骤相同的块内强行。

在第 3 行,对 getParam 的调用发生在 AppHandler 中。我们有 raw_param 这是一个Maybe ByteString. 在第 5 行,我们在一个嵌套的 do 中,所以绑定(?)发生在 Maybe monadparam中,要么是 aByteString要么我们得到Nothing,其余的 do 块将短路*。同样在第 6 行,p 要么是 Int,要么我们短路。

一切顺利,第 6 行p包含一个 Int (比如 42),第 7 行将返回Just 42. 回到第 4 行,变成AppHandler (Just 42). 现在不需要关心 AppHandler 是什么 - 类型都很高兴。

这里有一些变体也可以进行类型检查,并且可能证明对那些试图思考这一点的人有用。

在这种情况下,非执行变体实际上看起来更简单。唯一需要考虑的是<$>,如果我没看错的话,它是公正fmap的,并且适用于fstMaybe (Int,ByteString)所以我们可以得到Maybe Int


*如果我理解正确,则必须访问后续每一行,但只返回 Nothing,因此实际上不是 goto 样式的快捷方式。 Edit2:请参阅下面的 kosmikus 评论 - 懒惰 + 右嵌套意味着我们不需要评估每一行。

0 投票
1 回答
154 浏览

haskell - Snaplet 到 SnapletLens(snaplet 初始化)

在功能app :: SnapletInit App App中,我尝试了具有几个字段的 snaplet:

稍后在相同的功能中:

编译器说:

我试图SnapletLens

但问题是,这是获取或设置 myex-snaplet 内容的方法吗?以及如何引用myex的字段?我尝试了几件事,比如

但是它们在 app 方法中不起作用。所以问题是,如何访问 Snaplet 的字段Myex?镜头的myFun使用很简单,或者至少一切都可以编译。

我刚刚看到另一个看起来非常相似的答案。 在 snaplet 初始化期间使用 subsnaplet?

但是,如果我更换

编译器现在说:

我假设在上面的链接中pgPool是一个镜头pgs

br gsp

0 投票
1 回答
101 浏览

haskell - 如何在 Heist 的多个拼接中使用单个请求计算?

假设我有一个带有两个自定义标签<x/><y/>. 每个标签都绑定到一个Heist.Compiled.Splice. GET现在,模板在针对特定路由的每个请求时呈现。我怎么<x/>能被一对的第一个值<y/>替换,被同一对的第二个值替换,但是返回该对的 IO 计算每个请求只运行一次(并且只在该路由上运行,而不是在每个路线,因为有些人根本不会使用模板)?

0 投票
2 回答
847 浏览

haskell - Haskell 和网络框架

我开始开发一个应用程序(一些内部使用的无聊会计软件),并决定将其基于网络,因为这样可以一次性解决几个问题。

现在有几个可供 Haskell 选择的 web 框架(happstack、yesod 和 snap),我仍然开始再次感受到不得不处理 HTML、CSS 和极其聪明的有线 JavaScript 的痛苦。

嗯。

所以我到底想什么还不如尝试所有的 AJAX 方式并在CappuccinoSproutCore中做 UI 。(搜索引擎优化在这里不是问题)。

但是现在我真的不需要一个完整的 web 框架,比如上面三个之一,理论上一个可以提供 JSON 或 XML 包装的数据的 HTTP 服务器就足够了。

现在使用这三个中的任何一个还有意义吗?

最重要的是,这种方法的可行性如何?

君特

0 投票
1 回答
270 浏览

haskell - 如何制作nicEditor snaplet?(几个问题)

下面的示例定义了一个将 nicEditor 绑定到 textarea 的 snaplet。以下问题不仅与下面的示例有关,而且可能与其他一些类似案例有关。

  1. 新手可以按照下面的说明(如何澄清)吗?
  2. 如何使示例使用更少的步骤或更简单?(是否可能与以下内容大致相同?)
  3. 这使用了解释拼接。如果可能的话,一个 snaplet 是否也应该提供已编译的拼接?
  4. 一个 snaplet 可能会为典型情况提供一个默认处理程序或几个处理程序。处理程序可以在下面的“SnapNic.hs”中定义。那么对用户的一些回调机制呢?

--

0 投票
1 回答
472 浏览

haskell - 如何使用 Snap 检查客户端证书

我知道它很少使用,但是可以在 Snap 中访问客户端证书吗?

如果没有,是否可以使用不同的网络堆栈?