Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写->;的最佳方法-&燃气轮机;[a] haskell中的递归函数_Haskell_Recursion - Fatal编程技术网

编写->;的最佳方法-&燃气轮机;[a] haskell中的递归函数

编写->;的最佳方法-&燃气轮机;[a] haskell中的递归函数,haskell,recursion,Haskell,Recursion,所以我一直有这样的小问题 func :: a -> b -> [a] -- # or basically any a-> ...-> [a] where ... is any types -> func x y = func' [x] y -- '# as long as they are used to generate a list of [a] from x func' :: [a] -> b -> [a] func' = undefine

所以我一直有这样的小问题

func :: a -> b -> [a]  -- # or basically any a-> ...-> [a] where ... is any types  ->
func x y = func' [x] y -- '# as long as they are used to generate a list of [a] from x

func' :: [a] -> b -> [a] 
func' = undefined -- # situation dependant generates a list from
                  -- # each element and returns it as one long list
我应该这样保存吗

我应该使用func'隐藏在何处

我是否应该只使用[a]->b->[a]版本,并将[variable]传递给被调用方的责任留给被调用方


我可能需要编写这些函数,并且可能想搞乱顺序,所以我倾向于选项3。你觉得怎么样?

看起来你在试图重新设计concatMap:

concatMap :: (a -> [b]) -> [a] -> [b]
concatMap f = concat . map f

所以“map”位接受输入列表中的每个元素,并将“f”应用于它。“f”接受单个“a”并返回一个“[b]”。然后将这些单独的列表连接成一个列表。

看起来您正试图重新创建concatMap:

concatMap :: (a -> [b]) -> [a] -> [b]
concatMap f = concat . map f
所以“map”位接受输入列表中的每个元素,并将“f”应用于它。“f”接受单个“a”并返回一个“[b]”。然后将这些单独的列表连接成一个列表。

作为,
func'
可以替换为
concatMap
func

func
本身让我想起了
unfover

它用于从
b
生成
a
的列表

顺便说一下,
func
func'
是这类函数的不幸名称。

例如,
func'
可以替换为
concatMap
func

func
本身让我想起了
unfover

它用于从
b
生成
a
的列表


顺便说一句,
func
func'
是这类函数的不幸名称。

出于好奇,你能给出一个实际的例子说明在哪里需要它吗?
func'
让我想起了
(>=)
(>)
func x=func'[x]
func=func'。return
是关于函数的变长参数的问题吗?出于好奇,你能给出一个实际的例子说明在哪里需要它吗?
func'
让我想起了
(>=)
(>>)
func x=func'[x]
func=func'。return
您对函数的变长参数有何疑问?