标签: yesod

在[$ parseRoutes |/Home GET |]中使用了什么样的Haskell语法?

我在Yesod项目的首页上找到了这段代码:

import Yesod
data HelloWorld = HelloWorld
mkYesod "HelloWorld" [$parseRoutes|/ Home GET|]
instance Yesod HelloWorld where approot _ = ""
getHome = applyLayout [$hamlet|%h1 Hello World|]
main = toWaiApp HelloWorld >>= basicHandler 3000
Run Code Online (Sandbox Code Playgroud)

使用哪些语言功能[$parseRoutes|/ Home GET|]以及[$hamlet|%h1 Hello World|]使$,|,/和%符号起作用,这些符号的作用是什么?

syntax haskell web-applications yesod template-haskell

6
推荐指数
1
解决办法
293
查看次数

cabal安装yesod失败了吗?

Haskell包依赖继续是一个问题,但我不知道如何解决这个问题.我的环境:

  • Ubuntu 10.10,新安装
  • apt-get install ghc6 cabal-install
  • cabal update && cabal安装cabal-install

然后:

  • cabal安装yesod

我得到了这个:

$ cabal install yesod
cabal: Error: some packages failed to install:
persistent-0.3.1.2 failed during the building phase. The exception was:
ExitFailure 1
yesod-0.6.6 depends on persistent-0.3.1.2 which failed to install.
$ cabal install persistent-0.3.1.2
Resolving dependencies...
cabal: cannot configure blaze-builder-0.2.0.2. It requires text ==0.10.*
For the dependency on text ==0.10.* there are these packages: text-0.10.0.0,
text-0.10.0.1 and text-0.10.0.2. However none of them are available.
text-0.10.0.0 was …
Run Code Online (Sandbox Code Playgroud)

haskell cabal yesod

6
推荐指数
1
解决办法
1581
查看次数

选择AMI来部署haskell应用程序?

我正在使用yesod开发一个haskell web应用程序,我最终想要部署到EC2,有人可以推荐一个AMI,它有一个最近的haskell平台和一个可以从存储库安装的git客户端吗?

haskell amazon-ec2 amazon-web-services yesod

6
推荐指数
1
解决办法
1394
查看次数

Yesod与页面流程形成

某些表单太复杂,不适合一页.例如,如果表单涉及大量结构化数据,例如在地图上选择位置,在日历窗口小部件中安排事件,或者根据先前的输入更改表单的某些部分,则能够在多个页面上分解某种形式.

这对于动态网页和Javascript很容易,因为人们只需创建一个包含不同页面的选项卡小部件,实际提交的表单将包含整个选项卡小部件及其所有输入字段,从而产生POST对整个操作的单个请求.

但是,有时候生成某些输入字段需要很长时间; 即使在页面生成之后,它们甚至可能是计算密集型的,对低端计算机用户的浏览器造成负担.另外,基于先前的输入创建适应自己的形式变得困难或不可能.

因此,有必要在多个完整页面请求上拆分某种形式.

这可能被证明是困难的,特别是因为表单的第一页将POST发送/location/a,其将发出重定向并由客户端/location/b请求GET.将存储的表单数据传递POST /location/aGET /location/b难以处理的地方.

Spring Web Flow的创建者Erwin Vervaet(Spring框架的一个子项目,主要以其依赖注入功能而闻名)曾写过一篇博客文章,在所述框架中演示了这一功能,并将其与实现类似功能的Lift Web Framework进行了比较.然后,他向其他Web框架提出了挑战,这将在后面的文章中进一步描述.

Yesod将如何面对这个问题,特别是考虑到其基于REST的无状态特性?

forms rest haskell session-state yesod

6
推荐指数
1
解决办法
408
查看次数

将Yesod应用程序配置为CGI

鉴于一个刚刚搭建的Yesod应用程序,获取作为CGI程序的可执行文件所需的最小变更集是什么?包装程序是可以接受的.如果'cabal build'构建的默认可执行文件是CGI程序,则必须设置哪些环境变量才能充当CGI(默认情况下,它将绑定到端口并尝试在那里提供请求.)

对于FastCGI的类似答案也将受到赞赏.

haskell cgi fastcgi yesod

6
推荐指数
1
解决办法
482
查看次数

有没有办法快速添加处理程序到Yesod?

我刚刚开始在Haskell和Yesod.为了让我的脚湿透,我将把我在MVC中编写的一个小项目转换为Haskell.我的第一步是确定所有路线.

总而言之,我有8个处理程序来运行这个项目.我的路线文件如下所示:

/activity ActivityR GET
/activity/#String ActivityItemR POST DELETE

/dashboard/month MonthDashboardR GET
/dashboard/year YearDashboardR GET

/calendar CalendarR GET

/events/calendar CalendarEventsR GET
/events/report ReportEventsR GET

/report ReportR GET
Run Code Online (Sandbox Code Playgroud)

我在添加这些路线时所经历的流程如下:

  1. 添加路由到配置/路由
  2. 在Handler文件夹中创建文件(我为每个路由父文件创建了一个文件,例如/ events或/ dashboard)
  3. 将导入添加到在步骤#2中创建的处理程序到Application.hs
  4. 将处理程序文件名添加到项目的cabal文件中

是否有快捷方式或通配符这些处理程序,以便我可以做类似的事情 Import Handler.*

或者是处理多个不同路由的处理程序模块较少的首选方法?

routing haskell yesod

6
推荐指数
1
解决办法
467
查看次数

Haskell/Yesod中的分组复选框

我目前正在Yesod网络平台上使用Haskell进行开发,我需要在我的一个网页中创建一个表单.此表单必须包含多个复选框,但需要将它们分组到类别中.例如,用户需要在10个复选框,5个项目的列表中选择3个学科,其中最多2个可以是武器.

我在Yesod网站上阅读了本书的部分内容,根据我的理解,我需要创建一个自定义字段来创建分组复选框.不幸的是,我对Haskell并不是很好(刚刚开始使用它1-2周前)而且我很难理解如何实现这一目标.作为参考,这是我在Yesod网站上读到的关于自定义字段的书的页面:http://www.yesodweb.com/book/forms

知道了,我的问题是:如何在Haskell/Yesod中创建分组复选框?

编辑:在我提供的链接中,我理解了Field(fieldView和fieldEnctype)的构造函数的最后两个值,它是第一个(fieldParse),我不知道如何为我的目的进行修改.以下是我引用的链接中的示例:

passwordConfirmField :: Field Handler Text
passwordConfirmField = Field
    { fieldParse = \rawVals _fileVals ->
        case rawVals of
            [a, b]
                | a == b -> return $ Right $ Just a
                | otherwise -> return $ Left "Passwords don't match"
            [] -> return $ Right Nothing
            _ -> return $ Left "You must enter two values"
    , fieldView = \idAttr nameAttr otherAttrs eResult isReq ->
        [whamlet|
            <input id=#{idAttr} name=#{nameAttr} *{otherAttrs} type=password>
            <div>Confirm:
            <input id=#{idAttr}-confirm …
Run Code Online (Sandbox Code Playgroud)

checkbox haskell yesod

6
推荐指数
1
解决办法
313
查看次数

在Yesod生态系统中,对某些文本进行urlencode的最佳方法是什么?

我想对一些文本进行url编码(例如,用%20替换每个空格等).我找到了"HTTP"Network.HTTP.Base.urlEncode并且可以使用它,但我想知道Yesod生态系统中是否还有其他通常使用的东西.

haskell urlencode yesod

6
推荐指数
1
解决办法
717
查看次数

通过Persistent的实体密钥进行哈希?

我正在尝试Data.HashMap通过按外键字段对多个Persistent实体进行分组来构建结构.比如说我有这两个实体(直接来自Yesod书)

Person
    name String
    age Int Maybe
    deriving Show
BlogPost
    title String
    authorId PersonId
    deriving Show
Run Code Online (Sandbox Code Playgroud)

我想要一个:

HashMap PersonId [BlogPost]
Run Code Online (Sandbox Code Playgroud)

这里的挑战是PersonId没有直接实现Hashable(来自Data.Hashable),另外它根据你正在使用的数据库进行抽象(在我的情况下是Postgres).

我想(只是一个疯狂的初学者猜测)我可以通过执行fromPersistValueread进入Int64 实现Hashable for PersonId ,其中已经有一个Hashable实现,但我想可能有一种不太复杂的方法来实现它.

有什么建议?

haskell yesod

6
推荐指数
2
解决办法
370
查看次数

Yesod中的`import Some.Module as Import`是什么意思?

Yesod中的scaffolded站点生成一个Import.hs包含以下内容的文件.

module Import
    ( module Import
    ) where

import Prelude as Import
import Yesod   as Import
-- ...
Run Code Online (Sandbox Code Playgroud)

这种模式是什么?我的理解是它从Import.hs包中导入的模块中导出所有内容,但不会只是module Import where做同样的事情吗?嵌套module关键字里面的含义是什么module Import (module Import) where ...

haskell yesod

6
推荐指数
1
解决办法
189
查看次数