的順序成員我有如此生成實體的無窮列表:生成一個無限列表
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