小编Jes*_*spc的帖子

仆人的重定向

使Servant处理程序响应重定向的适当方法是什么?我正在使用导航REST应用程序,我想响应POST请求,这些请求通过重定向到相应的GET资源列表路径来创建资源.因此,例如POST/foos应该在创建foo后重定向到GET/foos.我在文档中找不到明确的方法.

haskell servant

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

了解Haskell中的Fix数据类型

这篇关于Haskell中的Free Monads的文章中,我们给出了一个由以下定义的Toy数据类型:

data Toy b next =
    Output b next
  | Bell next
  | Done
Run Code Online (Sandbox Code Playgroud)

修复定义如下:

data Fix f = Fix (f (Fix f))
Run Code Online (Sandbox Code Playgroud)

这允许通过保留常见类型来嵌套Toy表达式:

Fix (Output 'A' (Fix Done))              :: Fix (Toy Char)
Fix (Bell (Fix (Output 'A' (Fix Done)))) :: Fix (Toy Char)
Run Code Online (Sandbox Code Playgroud)

我理解固定点如何适用于常规函数,但我没有看到这里的类型如何减少.编译器遵循哪些步骤来评估表达式的类型?

monads haskell free-monad fixpoint-combinators

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

多个无服务器文件共享同一个api网关

我正在使用无服务器框架来构建REST API。我已经达到了200个限制堆栈大小,并了解了多种绕过它的方法。最常见的方法是以“微服务方式”拆分堆栈,其中每个堆栈都处理一组有意义的特定资源。

由于无服务器的工作方式,所有这些服务都会为其自身创建一个新的api网关,然后,如本文中所述,可以在它们之间设置一个共享域,以便可以通过相同的基本url访问所有端点。

即使这是一个有效的解决方案,我仍然非常希望能够使用在不同堆栈之间共享的单个API网关资源,因此我不必预先决定api的不同组件之间的关注点分离。这可能吗?

serverless-framework serverless

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

在 Kafka 之上并发写入事件源

我一直在考虑在事件源配置中使用 Apache Kafka 作为事件存储。发布的事件将与特定资源相关联,传递到与资源类型相关联的主题,并按资源 id 分片到分区中。因此,例如,创建类型为 Folder 且 ID 为 1 的资源将产生一个 FolderCreate 事件,该事件将传递到分区中的“文件夹”主题,该分区通过将 id 1 分片到主题中的分区总数来给出。即使我不知道如何处理使日志不一致的并发事件。

最简单的场景是有两个并发操作,它们可以使彼此无效,例如一个更新文件夹,一个销毁同一个文件夹。在这种情况下,该主题的分区最终可能包含无效序列 [FolderDestroy, FolderUpdate]。这种情况通常通过对事件进行版本控制来解决,如此处所述,但 Kafka 不支持此类功能。

在这些情况下,如何确保 Kafka 日志本身的一致性?

cqrs event-sourcing apache-kafka

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

DynamoDb中标记系统的数据模型

如何为dynamoDB表建模以构建标签系统,在该系统中可以为产品分配多个标签,并且我们应该能够过滤具有特定标签或标签集合的产品集,并获得分配给给定标签的所有标签产品?

我考虑过一张桌子:

哈希键:deviceId

范围键:标签

这允许查询设备的所有标签。

然后,我需要一个具有以下内容的GSI:

哈希键:标签

范围键:deviceId

用给定标签过滤所有设备。但这不会让我同时过滤多个标签,而不会涉及对GSI的多次查询和在应用程序级别的处理。

DynamoDB中是否有针对此问题的好的解决方案?

amazon-dynamodb

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

将多行解析为Haskell中的列表列表

我试图解析一个看起来像这样的文件:

a b c 
f e d
Run Code Online (Sandbox Code Playgroud)

我想匹配行中的每个符号,并将所有内容解析为列表列表,例如:

[[A, B, C], [D, E, F]]
Run Code Online (Sandbox Code Playgroud)

为此,我尝试了以下方法:

import           Control.Monad
import           Text.ParserCombinators.Parsec
import           Text.ParserCombinators.Parsec.Language
import qualified Text.ParserCombinators.Parsec.Token    as P

parserP :: Parser [[MyType]]
parserP = do
  x  <- rowP
  xs <- many (newline >> rowP)
  return (x : xs)

rowP :: Parser [MyType]
rowP = manyTill cellP $ void newline <|> eof

cellP :: Parser (Cell Color)
cellP = aP <|> bP <|> ... -- rest of the parsers, they all look very …
Run Code Online (Sandbox Code Playgroud)

parsing haskell parsec

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

如何在Dhall中定义和使用类似Haskell的求和类型

如何在Dhall编程语言中定义类似于Haskell的求和类型的求和类型?

例如,如果我在Haskell中定义

data SumProp = Option1 | Option2
Run Code Online (Sandbox Code Playgroud)

我的目的是在Dhall中定义一条记录,在该记录中其属性之一具有一组有限的可能值:

\(sumPropValue : SumProp) -> { value = sumPropValue }
Run Code Online (Sandbox Code Playgroud)

haskell dhall

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

在无服务器框架中的多个文件中声明资源

有没有办法将无服务器框架中的资源定义拆分为多个文件?就像是:

resources:
  - ${resources/base.yml}
  - ${resources/foo.yml}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试多种组合,但是我不断遇到关于找不到引用的错误。

serverless-framework

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