我正在修補強化學習,嘗試使用函數式編程來實現簡單的環境。Python函數式編程列表理解功能組合和while循環
我有功能step: State, Action -> State
和action_space: State -> [Action, ...]
。
我找了初始State
s = State()
e = [s]
while action_space(s):
a = best(action_space(s))
s = step(s, a)
e.append(s)
實現的功能step
迭代組成的函數式編程的方式所以我想我需要的是建立理解[f(x) and c(x), f(f(x)) and c(f(x)), f(f(f(x))) and c(f(f(x)), ...]
的方式,但沒有必要的評估。
在此先感謝。
而你的問題是?鑑於這個令人困惑的spec爲我寫代碼?無論如何,我相信你想要的是使用['functools.reduce'](https://docs.python.org/3.5/library/functools.html#functools.reduce),這是Python的摺疊操作。 – Bakuriu
@Bakuriu其實,這是[展開](https://en.wikipedia.org/wiki/Anamorphism)。 – phg
@Bakuriu我要求的方向或至少一些關鍵字來尋找。我認爲我正在尋找的解決方案恰恰與'reduce'相反。雖然'reduce'需要2個元素並且返回一個,但是我需要的函數會帶上1個(最後一個)元素並返回2個 - 它是一個函數後的函數。我猜'expand'可能是它的名字。 – FPFTW