我曾经在Haskell (loop)中编写嵌套的助手函数(顺便说一句,它是外部函数的局部使用的参数,并且是递归的): loop s i = if i > b then selse loop (s + i) (i + 1)在通用Lisp中,最清晰的模拟是什么?我在这里搜索,发现一些讨论集中在从函数返回函数(以及试图调用这些“返回”<e
在haskell中寻找一个函数,它扁平任意深度嵌套的列表,即递归应用concat并在最后一次迭代时停止(使用非嵌套列表)的函数,但我注意到这需要有一个更灵活的类型系统,因为随着列表深度的变化,输入类型也会发生变化实际上,存在几个堆栈溢出问题--比如 one --其中的响应声明“不存在一个在不同深度‘查看’不同嵌套列表‘的函数”。编辑:在haskell中,有些答案提
1 = hanoi (n - 1) b e a ++ hanoi 1 b a e ++ hanoi (n - 1) a b e我试过一点,看到它显然使用了尾部调用优化,因为它在常量内存中工作。我感觉有点糟糕,因为我仍然不能编写一个像Haskell那样简短/富有表现力的解决方案,同时使用TCO。
有没有一个简单的解决方案,我现在还看不到?