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