6
我是榆樹和函數式編程的新手。但我使用榆樹,我真的需要一個具有信號(列表字符串)作爲輸入並返回列表(信號字符串)的函數。榆木函數的類型:信號(列表a) - >列表(信號a)
我知道我可能不應該在我的程序中有一個更好的架構設計這個問題,但有一個功能,可以做到這一點將爲我解決一個大問題。
合併功能不完全相反:
combine : List (Signal a) -> Signal (List a)
combine = List.foldr (map2 (::)) (constant [])
我試圖做類似的功能結合起來的東西,但沒有成功爲止。任何想法如何創建這樣的功能?
謝謝@Apanatshka的回答。我知道列表需要是靜態大小,但因爲我很固執,我想繼續嘗試並將uncombine函數更改爲: 'uncombine:Signal(List a) - > List(Signal a) uncombine sig =如果(Signal.map isEmpty sig) then [] else Signal.map(List.head >> unsafe)sig :: uncombine(n-1)(Signal.map(List.tail >> unsafe)sig)'。 但我得到類型不匹配的錯誤,因爲if子句想要一個布爾值,但獲得信號布爾值。有沒有解決這個問題的辦法? –
不,沒有解決方法。你正在嘗試的是不可能的。 – Apanatshka