我从事函数式编程已经有一段时间了,但我对幺半群和其他纯抽象还是陌生的。我想知道是否有一种方法可以通过使用concat
为 monoid 定义的函数来生成值列表?
例如,以 0 作为单位(单位)和+
作为concat
,整数成为一个幺半群。如果我想要一个有序整数序列,我可以应用+
到我需要的第一个整数和1
(这将是这里的一个步骤),然后对结果重复该过程,依此类推。这将生成一个类似的列表[1, 2, 3, 4, 5, ...]
。
类似地,对于更复杂的 monoid,如果定义了 Event monoid,具有特殊值作为标识,并且concat
它需要两个事件并产生一个保持相同间隔的新事件,我可以有一个序列[ Event(Today, 12:00), Event(Today, 12:10), Event(Today, 12:20) ]
(所以间隔是 10 分钟)。
我的问题是:是否有任何标准模式/抽象/通过应用于concat
上一个项目和步骤/间隔来生成此类序列的方式?我正在使用fp-ts
图书馆,我试图找到可以做到的东西,但没有任何运气。我可以unfold
用来生成一个值数组,但是这个函数只将一个值传递给回调,而我需要两个值concat
才能工作