Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 类型模式名称:R a b=Q(a->;(R a b,b))_Haskell_Data Structures_Types_Terminology - Fatal编程技术网

Haskell 类型模式名称:R a b=Q(a->;(R a b,b))

Haskell 类型模式名称:R a b=Q(a->;(R a b,b)),haskell,data-structures,types,terminology,Haskell,Data Structures,Types,Terminology,我在这里寻找一些词汇。有许多形状都有共同的名称。例如,la=Empty | Cons a L通常称为“列表”,而ta=Leaf a | Node(ta)(ta)是一个“二叉树”,而St s a::St(s->(a,s))是状态单子的形式 我想知道这样的形状是否有名称: data R a b = Q (a -> (R a b,b)) 我在Arrow框架和状态机实现中见过这种模式。递归函数让它感觉有点像状态单子或控制单子。它也是除了(>)和(>=>)之外唯一一个定义了Arrow的结构 这个

我在这里寻找一些词汇。有许多形状都有共同的名称。例如,
la=Empty | Cons a L
通常称为“列表”,而
ta=Leaf a | Node(ta)(ta)
是一个“二叉树”,而
St s a::St(s->(a,s))
是状态单子的形式

我想知道这样的形状是否有名称:

data  R a b = Q (a -> (R a b,b))
我在Arrow框架和状态机实现中见过这种模式。递归函数让它感觉有点像状态单子或控制单子。它也是除了
(>)
(>=>)
之外唯一一个定义了Arrow的结构


这个数据结构有一个通用的名称吗?

我把这个数据结构称为协同程序

它表示的计算可以与其他计算并行控制,并且可以逐步计算。虽然您提供的接口不是Haskell中用于协同路由类的确切接口(一个更一般的协同路由也是monad不可知的,这意味着包装函数返回A
m(R A b,b)
,并且协同路由不必消耗输入,而您在这里总是必须使用A
A
来为计算提供数据),这很相似


数据结构还表示所谓的Comonads的子集。

该类型看起来与我期望用于传感器的类型相关——我只希望输出类型是单面的。Wikipedia有一个关于传感器的特定类别的页面,它应该是文献搜索的良好起点。

这是一个,也被称为Mealy机器。您的特定示例仅使用
(>)
作为基础箭头;另一个常见的选择是对一些单子m的
kleislim
(它只是将
a->b
转换为
a->mb
;例如,
数据rab=Q(a->MyMonad(b,rab))

它通常用于(具体来说,如箭头所示,请参见,以及这两篇博文:,),并应用于一般的流处理(如iteratees)


它在许多方面类似于协同程序,但它是一个更具体的概念。我链接的两篇博客文章称之为“协同程序”,所以“协同程序”当然是一种常用的说法,但确切的名称是一个自动箭头。

你有一棵盆景树:)。更好的二叉树是
ta=Branch(ta)(ta)| Leaf A
@amindfy:你是对的。我已经修好了。谢谢。@JohnF.Miller您不想在
ta
中的某个地方存储一些
a
D(对不起…我不得不…(或者可能是幻影类型!?:p)这正是我想要的,还有更多。谢谢你的完整回答。