的顺序成员我有如此生成实体的无穷列表:生成一个无限列表
entities =
let f x = x ++ "'"
in "x" : "y" : "z" : map f entities
我想以限定每个invokation返回一个新的实体的功能。像这样:
> nextEntity
x
> nextEntity
y
.
.
.
我想这是国家monad的地方,但会对指针感激不尽。
一些背景:如果您尝试在FOL中表示自然语言句子,则需要为您的实体命名变量。 “约翰爱玛丽”需要两个变量(一个是约翰和一个是玛丽),“约翰给玛丽一本书”需要三个变量(约翰,玛丽,这本书)等等。我需要的是一种生成新的在处理句子时遇到的每个“事物”的变量名称。
所以我想使用的函数必须跟踪哪些已经生成,并在invoke返回下一个。
除非他试图对Haskell感到好奇。虽然答案很好。 – luqui 2010-12-16 11:04:08