8得票1回答
如何在不使用 .flatMap 的情况下控制流,防止破坏反应式流并阻止像 distinctUntilChanged 这样的操作符对整个流进行操作。

我希望针对不同的State实现处理不同的可观察链逻辑。可以通过使用密封类/代数数据类型/联合和.flatMap()轻松实现,但这会中断流,其中像.distinctUntilChanged()这样的运算符仅在.flatMap()函数内部起作用,而不是在整个流中起作用。 sealed class...

14得票1回答
如何将解包严格字段与多态性结合起来?

{-# UNPACK #-} pragma会告诉编译器消除冗余构造函数。引用自Haskell wiki: For example, given this: data T = T {-# UNPACK #-} !(Int,Float) GHC will represent the ...

11得票3回答
我该如何让我的Haskell函数尽可能地简短?

season 函数使用代数函数,但我觉得代码很重复。 我该如何将其缩短到最短? data Month = Jan | Feb | Mar | Apr | May | June | July | Aug | Sept| Oct | Nov | Dec deriving (Eq,...

17得票3回答
函数式编程中除了单子之外,是否还使用任何代数结构?

我最近了解了函数式编程(在Haskell和Scala中)。它的能力和优雅非常迷人。 但是当我遇到单子Monad时,它使用了一个名为幺半群Monoid的代数结构,我感到惊讶和高兴,因为我一直在数学中学习的理论知识被应用于编程。 这个观察让我产生了一个问题:群、域或环(请参见代数结构了解其他结...

7得票2回答
定义幽灵类型 - 无法编译示例

我正在尝试了解幻影类型。我正在阅读Ralf Hinze的《有趣的幻影类型》。他使用了一个我从未见过且无法编译的关键字with。当我尝试时,会出现=的解析错误。 data Type t = RInt with t = Int | R...

8得票2回答
在Haskell中使用类型别名的正确方式是什么?

我是一个Haskell的入门者。在尝试完成hackerrank上的一些练习时,我遇到了一个错误,这让我想知道是否有“正确”的方法来解决它。 我尝试做的是这个: import Data.Matrix newtype Puzzle = Matrix Char complete :: Puz...

8得票1回答
代数数据类型的计数

我正在阅读/聆听克里斯·泰勒有关代数数据类型的演示。 链接:http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/ 其中有一节是关于函数类型的,特别是这个例子。 data Boo...

7得票3回答
C#中的类型安全鉴别联合,或者说:如何限制接口实现的数量?

首先,很抱歉内容有些冗长。基本上,我的问题是: 我正在尝试在C#中复制以下F#判别联合类型: type Relation = | LessThan of obj * obj | EqualTo of obj * obj | GreaterThan of obj...

51得票1回答
Haskell记录模式匹配

我正在寻找一种简化函数模式的方法,当实际数据不需要时:data X = A | B String | C Int Int String myfn :: X -> Int myfn A = 50 myfn (B _) = 200 myfn (C _ _ _) = 500 有没有一种更简单的...

68得票4回答
Kotlin和区分联合类型(总和类型)

Kotlin有类似的判别式联合类型(求和类型)吗?如果有的话,这个(F#)的惯用Kotlin翻译是什么?type OrderMessage = | New of Id: int * Quantity: int | Cancel of Id: int let handleMes...