标签: haskell-snap-framework

Snap Monad,LiftIO和ghc 7.4.1

我正在尝试使用ghc 7.0.4中的一些代码与7.4.1一起工作.

在我看来,从Snap moand内部访问IO的旧方式不再是类型检查.

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

a :: Snap ()
a = liftIO fireTheMissiles
Run Code Online (Sandbox Code Playgroud)

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

在GHC 7.4.1中,

No instance for (MonadIO Snap)
  arising from a use of `liftIO'
Possible fix: add an instance declaration for (MonadIO Snap)
Run Code Online (Sandbox Code Playgroud)

我很好奇周围有什么吸引人的工作.

haskell haskell-snap-framework

2
推荐指数
1
解决办法
610
查看次数

Snap Framework:如何在处理程序中运行IO

这可能是一个简单的问题,我在SO上看过类似的问题,但我仍然陷入困境.

我正在尝试进行HTTP调用以获取另一个博客的内容并将其显示在我的页面上.这比任何事情都更像是一种学习练习.

这是我的经纪人

blog :: App1Handler ()
blog = do
  contents <- Requester.getUrl "http://someblog.com/"
  heistLocal (bindString "contents" contents) . render $ "blog"
Run Code Online (Sandbox Code Playgroud)

Requester.getUrl具有签名getUrl :: String - > IO T.Text

我得到的错误是

src/Main.hs:50:15:
无法匹配期望的类型Handler App1 App1 t0' with actual typeIO T.Text'
在'getUrl'调用的返回类型中
'do'块的stmt:
contents < - getUrl"http:/ /someblog.com/"
在表达式中:
do {contents < - getUrl"http://someblog.com/";
heistLocal(bindString"contents"内容).渲染$"博客"}

从我收集的内容来看,我被困在IO monad中,它想要Handler App1 App1 t0类型.我试过在某些地方坚持使用liftIO,但我对此非常困惑.

谁能指出我正确的方向?

谢谢!

monads haskell haskell-snap-framework

2
推荐指数
1
解决办法
442
查看次数

Haskell和webframeworks

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

现在有几个用于Haskell的webframeworks可供选择(happstack,yesod和snap),我仍然开始感到痛苦,不得不处理HTML,CSS和非常聪明的有线JavaScript.

嗯.

那么我认为可能会尝试使用所有AJAX方式并在CappuccinoSproutCore中执行UI .(SEO不是问题).

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

现在还有一点可以使用这三者中的任何一个吗?

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

半滑舌鳎

haskell happstack yesod haskell-snap-framework

2
推荐指数
1
解决办法
837
查看次数

在内存中"保存"数据映射

我有三个数据结构定义为这样的,其中S,LL,M,和Object,表示Set,ListLike,Map,和ByteString,分别为:

nouns :: IO [Object]
nouns = liftM LL.words $ B.readFile "nounlist.txt"

obj :: IO ObjectSet
obj =  liftM S.fromList nouns

actions :: IO ActionMap
actions = do
  n <- nouns
  let l = foldl' (\z x -> (x,Sell):(x,Create):z) [] n
  return $ M.fromList $
    (\(x,y) -> ((x, Verb y []), Out (Verb y []) x)) <$> l
Run Code Online (Sandbox Code Playgroud)

现在我有一个函数将未评估的Set和Map绑定到变量ao.一旦进入query …

multithreading haskell memory-management haskell-snap-framework

2
推荐指数
1
解决办法
179
查看次数

将haskell列表数据渲染到网页

我正在使用snap框架和haskell来创建简单的Web应用程序.我想知道如何将列表呈现到网页,就像这样我有一个名字和姓氏的列表

[["firstName1","lastName1"],["firstName2","lastName2"],["firstName3","lastName3"]]
Run Code Online (Sandbox Code Playgroud)

我想在两列中显示这些信息,有什么可能的方法,我能够绑定单值信息并显示在网页上.

haskell pretty-print haskell-snap-framework

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

我在哪里放我的snaplet?

我是Haskell和Snap的新手,我想写一个简单的bug跟踪应用程序.我使用$ snap init它设置了Snap项目并且它可以工作.问题是我不知道如何进一步.

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

我阅读了有关snaplet的文档,但我无法弄清楚它们的源代码放在哪里(/snaplets我想在目录中?如果是这样,我该如何加载它们?).有人能指出我正确的方向吗?

haskell haskell-snap-framework

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

这在Snap中有什么作用?

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

--------------------------------------------------------------------------
-- | Handle login submit
handleLoginSubmit :: Handler App (AuthManager App) ()
handleLoginSubmit =
    loginUser "login" "password" Nothing
              (\_ -> handleLogin err) (redirect "/")
  where
    err = Just "Unknown user or password"

-- | Render login form
handleLogin :: Maybe T.Text -> Handler App (AuthManager App) ()
handleLogin authError = heistLocal (bindSplices errs) $ render "login"
  where
    errs = [("loginError", textSplice c) | c <- maybeToList authError]

 | The application's routes.
routes :: [(ByteString, Handler App …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-snap-framework

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

Snap Web框架和OSX路径

前言:OSX开发的新手.

cabal安装快照 - 这很好用.

当我键入snap到终端时没有任何反应.如何将我的快照路径导出到OSX中的$ PATH?

同样的事情发生在happstack和yesod ....这些都安装了

macos haskell yesod haskell-snap-framework

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

快照删除说 vscode 未安装

我想删除 vscode (因为 vscode 不会启动。没有错误消息)。

我在快照列表中找到了它,但它不会删除:

$ snap list | grep code
code                     8795a988         20    stable    vscode*           classic
$ snap remove vscode
snap "vscode" is not installed
$ snap remove vscode*
snap "vscode*" is not installed
Run Code Online (Sandbox Code Playgroud)

我在这里阅读教程:https://www.howtogeek.com/252047/how-to-install-and-manage-snap-packages-on-ubuntu-16.04-lts/

我从这里得到 vscode: https: //code.visualstudio.com/#alt-downloads

linux haskell-snap-framework manjaro

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

Docker 失败并显示“无法启动 containerd:等待 containerd 启动超时”

我在 Ubuntu 18.04.2 上使用 snap 安装了 docker。

当我尝试启动 docker 时,它失败并显示以下错误日志。

2020-07-16T23:49:14Z docker.dockerd[932]: failed to start containerd: timeout waiting for containerd to start
2020-07-16T23:49:14Z systemd[1]: snap.docker.dockerd.service: Main process exited, code=exited, status=1/FAILURE
2020-07-16T23:49:14Z systemd[1]: snap.docker.dockerd.service: Failed with result 'exit-code'.
2020-07-16T23:49:14Z systemd[1]: snap.docker.dockerd.service: Service hold-off time over, scheduling restart.
2020-07-16T23:49:14Z systemd[1]: snap.docker.dockerd.service: Scheduled restart job, restart counter is at 68.
2020-07-16T23:49:14Z systemd[1]: Stopped Service for snap application docker.dockerd.
2020-07-16T23:49:14Z systemd[1]: Started Service for snap application docker.dockerd.
Run Code Online (Sandbox Code Playgroud)

它一遍又一遍地进入重新启动循环。我应该怎么做才能让 docker 重新工作?

ubuntu haskell-snap-framework docker

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

将IO [FilePath]转换为字符串或字节流

我正在从事这个项目,以与Haskell保持联系并努力寻找简单的例子。

在这种情况下,我想要一个针对Snap的Web请求处理程序,该处理程序返回目录中的文件列表。

我相信我正在尝试使getDirectoryContents返回到Snap想要的Bytestring中。

我最困惑如何处理下一行中的返回值filenames <- getDirectoryContents "data"

import Control.Applicative
import Snap.Core
import Snap.Util.FileServe
import Snap.Http.Server
import System.Directory (getDirectoryContents)

main :: IO ()
main = quickHttpServe site

site :: Snap ()
site =
    ifTop (writeBS "hello world") <|> 
    route [ ("foo", writeBS "bar")
          , ("echo/:echoparam", echoHandler)
          , ("view_root_json_files", listRootFilesHandler)
          ] <|> 
    dir "static" (serveDirectory ".")

echoHandler :: Snap ()
echoHandler = do
    param <- getParam "echoparam"
    maybe (writeBS "must specify echo/param in URL") …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-snap-framework

0
推荐指数
1
解决办法
1690
查看次数

Ubuntu 中的 Android 可执行文件快照路径在哪里?

我需要为我的 Ionic 应用程序找到Android 可执行路径,我在 Ubuntu 中安装了带有snap 的Android ,在 Glances 结果中,我可以阅读:

 PID 302   /snap/android-studio/84/android-studio/jre/bin/java -classpath
Run Code Online (Sandbox Code Playgroud)

但是这些文件夹是空的,命令行是:

npx cap 打开 android

我明白了:

[info] Opening Android project at /home/phobos/dev2/reactjs/iotabreact/android
[error] Unable to launch Android Studio. You must configure "linuxAndroidStudioPath" in your capacitor.config.json to point to the location of studio.sh, using JavaScript-escaped paths:
Example:
{
  "linuxAndroidStudioPath": "/usr/local/android-studio/bin/studio.sh"
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。

ubuntu android path haskell-snap-framework ionic-framework

0
推荐指数
2
解决办法
2950
查看次数