问题标签 [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.
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) » 返回一些虚假的东西?(但我不知道它是什么:))
谢谢
haskell - 另一个 monad 下的有状态代码
我有一个爱好网络项目。很简单,只是为了学习 Haskell 和 web 编程。为清楚起见,我使用 Snap 框架。我有以下代码(site.com/auth 处理程序):
withSession
读取当前会话并运行参数中的函数。在这里我面临一个问题:用户获得授权,我想为会话添加新值s
并使用它运行代码。最好的方法是什么?你会怎么做?假设下面的代码也使用s
.
auth
另一个问题:我能否以某种方式在处理程序(如)和其他函数中透明地提供上下文?我不想使用以下参数提取所有函数中的所有上下文(如数据库连接、会话和可能其他)ctx
:
理想情况下,我想要一个功能withContext
,但在处理请求期间可能会更改上下文。我想我可以定义我的 monad 来解决它(对吗?),但是我已经必须使用 Snap monad 并且我不能扩展它(这也是一个问题)?
希望我说得很清楚对我有帮助。
haskell - 查找 snap-server 绑定的端口
使用 snap-server 的httpServe
方法,我可以setPort 0
指示服务器连接到下一个空闲端口。不幸的是,一旦我启动了 http 服务器,我就找不到任何方法来确定它实际启动的端口。例如,我的第一次尝试是从 2679 端口开始的——有什么方法可以确定这个数字吗?
forms - 使用带有消化函子和 Snap 的单子验证
我现在尝试了很长时间来围绕如何在消化函子表单字段中使用验证,这需要访问另一个 monad。简而言之,我有这样的消化形式
(studentId 基本上就是用户名)
并想使用Snap.Snaplet.AuthusernameExists
的功能来检查输入的用户名是否唯一。
为了完整起见,这里是对应的数据类型:
我在处理程序中创建我的表单,例如:
所以我现在的问题是了解如何访问表单内的 Auth snaplet 的状态。是已经通过还是我必须自己通过?Text.Digestive.Form中的函数会checkM
分别帮助我吗?validateM
我发现了几个如何使用消化函子和 snap auth 和 session 的例子,比如:
但是没有一个显示 Snap.Snaplet.Auth 和消化仿函数直接一起工作,而且在 monad 转换器和提升方面我仍然是一个菜鸟……也许这对我来说太容易看到了。:(
我可以在 github 上上传一个独立的示例,如果它有助于说明它,它会显示我的问题。非常欢迎任何提示、指示和建议!:)
汉内斯
补充:我创建了一个演示基本身份验证功能的示例应用程序,你可以看看这里:消化功能器-快照-验证-示例享受!
rest - 如何在 Backbone.js 中使用 Haskell Snap
大多数 Haskell Web 应用程序框架似乎都专注于在服务器上做很多工作(模板、表单等)。然而,其他大多数人似乎都在客户端上移动越来越多的应用程序,并通过狭窄的 REST API 与服务器通信。
我正在寻找构建一个主要在客户端上运行的网络应用程序。我想将客户端基于Backbone.js(或类似的),并使用 JavaScript 模板库完全在客户端上进行 HTML 模板。
我想在 Haskell 中实现服务器端,最好使用 Snap 框架。
有没有人尝试过以这种方式使用 Snap 框架?如何在 Snap 中使用 GET、POST、PUT、DELETE 方法实现基本的 REST API?或者我应该为我的服务器选择比 Snap 更简单的东西吗?
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 中,
我很好奇一个有吸引力的工作会是什么。
haskell - 我应该把我的 snaplets 放在哪里?
我是 Haskell 和 Snap 的新手,我想编写一个简单的错误跟踪应用程序。我使用它设置了一个 Snap 项目$ snap init
,它可以工作。问题是我不知道如何走得更远。
我想创建一个Tickets
使用数据库存储错误报告的 snaplet,并在我的主 Web 应用程序中使用该 snaplet。
我阅读了有关 snaplets 的文档,但我不知道将它们的源代码放在哪里(/snaplets
我想在目录中?如果是,我如何加载它们?)。有人能指出我正确的方向吗?
haskell - Snap 0.9 路由行为
我无法弄清楚 Snap 0.9(很可能还有其他版本)中的路由异常
我知道“/”是一个捕获所有内容的模式,除非我将 ifTop 函数放在处理程序中,对吧?因此,使用 ("/", blah) 路由,任何 URL 都应该由 blah 处理程序处理,对吗?
使用 snap init 生成的默认应用程序,除了根请求的 index.tpl 之外,我无法快速渲染任何内容。
给定根(“/”,等等)和处理程序
它为除根 URL 之外的任何 URL 呈现 blah 模板!所以“/anything”呈现blah模板,但“/”呈现索引模板。
将 blah 处理程序更改为
不会改变任何行为。只有在这种情况下,我无法路由到“/anything”。路由到“/”仍然呈现索引模板。我错过了什么?如何获得“/”来呈现我选择的模板?
haskell - 这在 Snap 中有什么作用?
有人可以解释默认快照项目模板中发生了什么吗?
- 为什么返回()?
- “控制器”(正如您在 MVC 中所说的那样)功能的标准签名是什么?
- 它如何知道
index.tpl
用作/
路线的模板? - 我如何摆脱身份验证层,比如我只想制作一个简单的个人网络应用程序?
文档和教程主要涵盖了 snapplet(或模板),但没有涵盖任何 Haskell。很高兴看到一个如何编写书店之类的应用程序或博客的示例(官方 snap 网站将他们的博客条目存储在 markdown 中 - 所以我不确定那里发生了什么)。
haskell - 如何在生产中运行 Snap haskell webapp?
我已经在我的生产 Ubuntu 服务器(在 EC2 上)上安装了 Snap/Haskell,并签出了我的项目——但是我该如何运行它呢?
我的意思是,在本地,我从命令行运行它:
snap 是否带有它自己的网络服务器(看起来像),如果是这样,我该如何配置它以作为某种守护进程运行?
有小费吗?
编辑2:
他们在维基上说:
snap-server 是一个 HTTP 服务器库,支持 snap-core 中定义的接口。
在这里,关于“haskell web 代码的部署/后端选项”的 haskell wiki 说 Snap:
包括自己的服务器。见网络/框架
但是如何?我将如何运行它自己的服务器?如果我只是对编程感兴趣,为什么我必须知道该死的东西的部署......
编辑:相关问题:部署使用 Snap 框架的 Haskell 代码