非常简单的问题,我正在编写一个XML文档,我不知道如何编写"]]>"而不会被视为该部分的结尾.
鉴于部分功能f和参数列表xs,我找对的列表(x, f(x)),其中f定义.这似乎是一件很自然的事情,但到目前为止我还没有优雅地表达出来.我想知道在Maybe/Monad/Applicative/...区域中是否有任何可以帮助的东西?以下作品,但似乎有点明确.
import Data.Maybe (mapMaybe)
graph :: (a -> b) -> [a] -> [(a, b)]
graph f = map (\x -> (x, f x))
liftMaybe :: (a, Maybe b) -> Maybe (a, b)
liftMaybe (x, Just y) = Just (x, y)
liftMaybe (_, Nothing) = Nothing
partialgraph :: (a -> Maybe b) -> [a] -> [(a, b)]
partialgraph f = mapMaybe liftMaybe . graph f
Run Code Online (Sandbox Code Playgroud)
是否liftMaybe存在其他名称?我发现其中一些重新制定:
import Control.Monad (ap)
graph' …Run Code Online (Sandbox Code Playgroud) 我希望聚合列的总和,同时跟踪是否存在表示错误情况的NULL值.例如,取表号码:
# select * from numbers;
n | l
------+-----
1 | foo
2 | foo
NULL | bar
4 | bar
Run Code Online (Sandbox Code Playgroud)
给定一个标签l,我想计算n带有该标签的数字总和,前提是没有NULL值.理想情况下,对于没有任何行的一个标签,总和将是0,所以我在寻找一些查询q,从而
q('foo') = 3,q('baz') = 0并q('bar')以某种方式发出错误信号,例如,通过返回NULL.
我从sum() 聚合函数开始,但是将NULL行转换为0.一个解决方案是返回,NULL只要有任何NULL值.
sum() 给
# select sum(n) from numbers where l = 'bar';
sum
-----
4
Run Code Online (Sandbox Code Playgroud)
但我宁愿和你sumnull()在一起
# select sumnull(n) from numbers where l = 'bar';
sumnull …Run Code Online (Sandbox Code Playgroud) 偶尔我会发现自己映射到一大堆仿函数,例如一些可选值集合的解析器:
-- parse a rectangular block of characters to a map of
-- coordinate to the character, or Nothing for whitespace
parseRectangle :: Parser (Map (Int, Int) (Maybe Char))
data Class = Letter | Digit | Other
classify :: Char -> Class
parseClassifiedRectangle :: Parser (Map (Int, Int) (Maybe Class))
parseClassifiedRectangle = fmap (fmap (fmap classify)) parseRectangle
Run Code Online (Sandbox Code Playgroud)
嵌套fmaps有哪些好方法?通常它不像这里那么清楚,我最终添加fmaps直到代码类型检查.简单的代码最终成为一堆fmap样板,我真正想要表达的是"将此函数提升到适当的深度并将其应用于所包含的类型".
一些想法,到目前为止我都没有发现特别令人满意的想法:
fmap2 :: (Functor f, Functor g) => (a -> b) -> g (f a) …我的具体问题是这样的:我碰到的名字跑throwT在Module.hs一个大项目的Haskell.我想知道是什么throwT.我最终成功地将这一点想象如下:
:load Module.hs 其次是 :i throwT
throwT :: Monad m => e -> Control.Monad.Trans.Either.EitherT e m r
-- Defined in ‘Data.EitherR’
Data.EitherR,它指向在封装errorsghc-pkg list errors 给 errors-1.4.7有没有更好的方法来做到这一点,从更精确的意义上讲(步骤3不是),而且不那么乏味?
如何使用Servant处理常规表单POST?特别是,给定HTML格式,例如
<form action="/check" method="post">
Solution:
<input name="code" type="text">
<input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
和
data CheckResult = Correct | Wrong
instance ToHtml CheckResult
...
checkCode :: Text -> Handler CheckResult
checkCode code = if code == "secret" then Correct else Wrong
Run Code Online (Sandbox Code Playgroud)
如何将东西串在一起?
我的位置是,我有一个/render返回 PDF 文档的 HTTP POST 端点,并且希望向用户呈现一个按钮/链接,该按钮/链接将导致该文档被下载并保存到文件中,而无需离开我的 Elm应用程序。
理想情况下,POST 将接受text/plain具有自定义格式的正文,但我可以重新设计端点以接受multipart/form-data或application/x-www-form-urlencoded。
我可以按如下方式将原始数据成功下载到 Elm 应用程序,但我不知道如何将文件保存到磁盘。
import Http
render : String -> Http.Request String
render body =
Http.request
{ method = "POST"
, headers = []
, url = "/render"
, body = Http.stringBody "text/plain" body
, expect = expectString
, timeout = Nothing
, withCredentials = False
}
Run Code Online (Sandbox Code Playgroud)