Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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
理解Haskell中的高阶函数_Haskell_Higher Order Functions - Fatal编程技术网

理解Haskell中的高阶函数

理解Haskell中的高阶函数,haskell,higher-order-functions,Haskell,Higher Order Functions,我的思路是End是ch,xYz1Ab是str,所以foldr f End xYz1Ab应该是ENDxzb,foldr f xYz1Ab End应该是End。有人能给我解释一下吗?结尾中没有一个字符与保护“a”匹配,但是声明是f ch str,输入是f END xYz1Ab,ch不应该对应于END,str不应该是xYz1Ab吗?但是你没有写f END xYz1Ab,你写的是foldr f END xYz1Ab。在第一种情况下,这两个字符串都是f函数的参数,而f的第一个参数应该是Char,而不是字符

我的思路是End是ch,xYz1Ab是str,所以foldr f End xYz1Ab应该是ENDxzb,foldr f xYz1Ab End应该是End。有人能给我解释一下吗?

结尾中没有一个字符与保护“a”匹配,但是声明是f ch str,输入是f END xYz1Ab,ch不应该对应于END,str不应该是xYz1Ab吗?但是你没有写f END xYz1Ab,你写的是foldr f END xYz1Ab。在第一种情况下,这两个字符串都是f函数的参数,而f的第一个参数应该是Char,而不是字符串。在第二种情况下,f、END和xYz1Ab都是foldr函数的参数。如果您编写了foldr f END xYz1Ab,那么字符串将是f的参数,但这当然是另一种类型的错误。
f::Char->String->String
f ch str
    |('a'<=ch&&ch<='z')=ch:str
    |otherwise=str
*Main> foldr f "END" "xYz1Ab"
"xzbEND"
*Main> foldr f "xYz1Ab" "END" 
"xYz1Ab"