1
我想在Haskell的函數中執行幾條語句, 我在網上看了一下,並得到了如果我使用「do」的想法,我可以做到這一點我使用過它,但它仍然不適合我,如果有人可以請看看並指導我做錯了什麼,我剛開始使用haskell,所以它與Haskell語法有點糾結。在同一個函數中執行多個命令(Haskell)
我的功能:
type Rod = String
Move = (Integer, Rod, Rod)
hanoi :: Integer -> Rod -> Rod -> Rod -> [Move]
hanoi n source helper destination= if n==1 then [(n source destination)] else do
(hanoi (n-1) source helper destination)
([n source destination])
(hanoi (n-1) helper destination source)
我試圖做漢諾塔的問題;我要執行的三句話,是經過「做」。任何幫助將不勝感激。
在此先感謝!
Haskell是一種面向表達式的語言。一個'='(或者表達式的' - >'的RHS上的所有內容都是一個表達式.'do'塊是一種奇特的表達式,但不適合這種用例。對於你的情況,你真的應該考慮什麼*結果*需要。然後寫一個描述它的表達式。 – Carl
我認爲你非常接近 - 你只需要意識到你不想*做*某件事 - 事實上你試圖返回一個「列表」動作 - 你必須以某種方式* concat *結果)。 ......對於落後者也是如此:對你感到羞恥 - 這是一個很好的問題 - 也許不是博士水平,但請保持社區對初學者友好! – Carsten
@Carsten感謝您這樣甜蜜,善良和激勵的評論,我會盡量想到將結果拼接起來。我很高興聽到我有些接近解決方案:)再次感謝!!!! – Nia