问题标签 [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 回答
397 浏览

haskell - 使用 cabal 安装 semigroups 失败

我想安装 Snap,但我是 Haskell 及其平台的新手。

我使用 cabal 安装 Snap,但无法安装 semigroups :

这是我的 cabal 版本:

我已经看到 semigroups 是许多 Snap 依赖项的依赖项,我该如何纠正这个安装?

我在 ubuntu 中运行 gnome « Vous utilisez actuellement Ubuntu 10.04 LTS - le Lynx Lucide - version sortie en avril 2010 »

编辑:

在 semigroups.cabal 文件的包中,我看到了这个:

我可能不得不让 « impl(hugs) » 返回一些虚假的东西?(但我不知道它是什么:))

谢谢

0 投票
1 回答
444 浏览

haskell - 另一个 monad 下的有状态代码

我有一个爱好网络项目。很简单,只是为了学习 Haskell 和 web 编程。为清楚起见,我使用 Snap 框架。我有以下代码(site.com/auth 处理程序):

withSession读取当前会话并运行参数中的函数。在这里我面临一个问题:用户获得授权,我想为会话添加新值s并使用它运行代码。最好的方法是什么?你会怎么做?假设下面的代码也使用s.

auth另一个问题:我能否以某种方式在处理程序(如)和其他函数中透明地提供上下文?我不想使用以下参数提取所有函数中的所有上下文(如数据库连接、会话和可能其他)ctx

理想情况下,我想要一个功能withContext,但在处理请求期间可能会更改上下文。我想我可以定义我的 monad 来解决它(对吗?),但是我已经必须使用 Snap monad 并且我不能扩展它(这也是一个问题)?

希望我说得很清楚对我有帮助。

0 投票
2 回答
380 浏览

haskell - 查找 snap-server 绑定的端口

使用 snap-server 的httpServe方法,我可以setPort 0指示服务器连接到下一个空闲端口。不幸的是,一旦我启动了 http 服务器,我就找不到任何方法来确定它实际启动的端口。例如,我的第一次尝试是从 2679 端口开始的——有什么方法可以确定这个数字吗?

0 投票
1 回答
583 浏览

forms - 使用带有消化函子和 Snap 的单子验证

我现在尝试了很长时间来围绕如何在消化函子表单字段中使用验证,这需要访问另一个 monad。简而言之,我有这样的消化形式

(studentId 基本上就是用户名)

并想使用Snap.Snaplet.AuthusernameExists的功能来检查输入的用户名是否唯一。

为了完整起见,这里是对应的数据类型:

我在处理程序中创建我的表单,例如:

所以我现在的问题是了解如何访问表单内的 Auth snaplet 的状态。是已经通过还是我必须自己通过?Text.Digestive.Form中的函数会checkM分别帮助我吗?validateM

我发现了几个如何使用消化函子和 snap auth 和 session 的例子,比如:

但是没有一个显示 Snap.Snaplet.Auth 和消化仿函数直接一起工作,而且在 monad 转换器和提升方面我仍然是一个菜鸟……也许这对我来说太容易看到了。:(

我可以在 github 上上传一个独立的示例,如果它有助于说明它,它会显示我的问题。非常欢迎任何提示、指示和建议!:)

汉内斯

补充:我创建了一个演示基本身份验证功能的示例应用程序,你可以看看这里:消化功能器-快照-验证-示例享受!

0 投票
1 回答
976 浏览

rest - 如何在 Backbone.js 中使用 Haskell Snap

大多数 Haskell Web 应用程序框架似乎都专注于在服务器上做很多工作(模板、表单等)。然而,其他大多数人似乎都在客户端上移动越来越多的应用程序,并通过狭窄的 REST API 与服务器通信。

我正在寻找构建一个主要在客户端上运行的网络应用程序。我想将客户端基于Backbone.js(或类似的),并使用 JavaScript 模板库完全在客户端上进行 HTML 模板。

我想在 Haskell 中实现服务器端,最好使用 Snap 框架。

有没有人尝试过以这种方式使用 Snap 框架?如何在 Snap 中使用 GET、POST、PUT、DELETE 方法实现基本的 REST API?或者我应该为我的服务器选择比 Snap 更简单的东西吗?

0 投票
1 回答
624 浏览

haskell - Snap Monad、LiftIO 和 ghc 7.4.1

我试图让一些在 ghc 7.0.4 中工作的代码与 7.4.1 一起工作。

在我看来,从 Snap mo 内部访问 IO 的旧方式不再进行类型检查。

在 ghc 7.0.4 中,记录的访问 IO 的方式已编译。

http://hackage.haskell.org/packages/archive/snap-core/0.8.1/doc/html/Snap-Core.html

在 GHC 7.4.1 中,

我很好奇一个有吸引力的工作会是什么。

0 投票
1 回答
288 浏览

haskell - 我应该把我的 snaplets 放在哪里?

我是 Haskell 和 Snap 的新手,我想编写一个简单的错误跟踪应用程序。我使用它设置了一个 Snap 项目$ snap init,它可以工作。问题是我不知道如何走得更远。

我想创建一个Tickets使用数据库存储错误报告的 snaplet,并在我的主 Web 应用程序中使用该 snaplet。

我阅读了有关 snaplets 的文档,但我不知道将它们的源代码放在哪里(/snaplets我想在目录中?如果是,我如何加载它们?)。有人能指出我正确的方向吗?

0 投票
1 回答
543 浏览

haskell - Snap 0.9 路由行为

我无法弄清楚 Snap 0.9(很可能还有其他版本)中的路由异常

我知道“/”是一个捕获所有内容的模式,除非我将 ifTop 函数放在处理程序中,对吧?因此,使用 ("/", blah) 路由,任何 URL 都应该由 blah 处理程序处理,对吗?

使用 snap init 生成的默认应用程序,除了根请求的 index.tpl 之外,我无法快速渲染任何内容。

给定根(“/”,等等)和处理程序

它为除根 URL 之外的任何 URL 呈现 blah 模板!所以“/anything”呈现blah模板,但“/”呈现索引模板。

将 blah 处理程序更改为

不会改变任何行为。只有在这种情况下,我无法路由到“/anything”。路由到“/”仍然呈现索引模板。我错过了什么?如何获得“/”来呈现我选择的模板?

0 投票
1 回答
348 浏览

haskell - 这在 Snap 中有什么作用?

有人可以解释默认快照项目模板中发生了什么吗?

  1. 为什么返回()?
  2. “控制器”(正如您在 MVC 中所说的那样)功能的标准签名是什么?
  3. 它如何知道index.tpl用作/路线的模板?
  4. 我如何摆脱身份验证层,比如我只想制作一个简单的个人网络应用程序?

文档和教程主要涵盖了 snapplet(或模板),但没有涵盖任何 Haskell。很高兴看到一个如何编写书店之类的应用程序或博客的示例(官方 snap 网站将他们的博客条目存储在 markdown 中 - 所以我不确定那里发生了什么)。

0 投票
3 回答
3918 浏览

haskell - 如何在生产中运行 Snap haskell webapp?

我已经在我的生产 Ubuntu 服务器(在 EC2 上)上安装了 Snap/Haskell,并签出了我的项目——但是我该如何运行它呢?

我的意思是,在本地,我从命令行运行它:

snap 是否带有它自己的网络服务器(看起来像),如果是这样,我该如何配置它以作为某种守护进程运行?

有小费吗?

编辑2:

他们在维基上说:

snap-server 是一个 HTTP 服务器库,支持 snap-core 中定义的接口。

在这里,关于“haskell web 代码的部署/后端选项”的 haskell wiki 说 Snap:

包括自己的服务器。见网络/框架

但是如何?我将如何运行它自己的服务器?如果我只是对编程感兴趣,为什么我必须知道该死的东西的部署......

编辑:相关问题:部署使用 Snap 框架的 Haskell 代码