gpt4 book ai didi

haskell - 无论实例如何,都在哪里使用 Haskell 类别组合?

转载 作者:行者123 更新时间:2023-12-05 00:26:55 25 4
gpt4 key购买 nike

我想我几乎弄清楚了 Category 类代表什么。然而,在这种抽象级别上,它让我想知道在哪里可以找到它的通用用途。

使用什么代码.id来自 Control.Category已找到不同实例的实际用途?

最佳答案

最近常见的一种是 Mealy 机器。考虑无限流

data Stream a = Stream a (Stream a)

现在我们可以编写可以被消费的无限流,比如 [1..]
oneUpTo :: Stream Int
oneUpTo = go 1 where go n = Stream n (go (n+1))

但有时编写也会受输入影响的流很有用。为此,我们将流的下一步“步骤”隐藏在函数后面
data Mealy b a = Mealy (b -> (a, Mealy b a))

现在我们可以写一些更奇特的回复,比如 echo
echo :: a -> Mealy (Maybe a) a
echo a = Mealy go where
go Nothing = (a, echo a )
go (Just a') = (a', echo a')

允许输入到 switch流的内部“状态”。当然,这是现在更强大的东西。我称它为 Mealy 机器,因为它形成了某种(无限)状态自动机。

然而,有点不明显的是 Mealy形成一个 Category .
instance Category Mealy where
id = Mealy (\a -> (a, id))
Mealy bc . Mealy ab = Mealy $ \a -> case ab a of
(b, nab) -> case bc b of
(c, nbc) -> (c, nbc . nab)

在这种情况下,我们结合了两个 Mealy通过构建第三台机器,将其输入提供给第一台机器,将第一台机器的输出带到第二台机器,然后将最终输出与更新的组合对一起返回。

如果这很有趣,并且您不介意探索具有相当稀疏文档的大包,那么所有这些都可以在 machines 中找到。在 Hackage 上打包。

关于haskell - 无论实例如何,都在哪里使用 Haskell 类别组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21537010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com