Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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
Html 调试一些Haskell函数、保护_Html_Debugging_Haskell_Helpers - Fatal编程技术网

Html 调试一些Haskell函数、保护

Html 调试一些Haskell函数、保护,html,debugging,haskell,helpers,Html,Debugging,Haskell,Helpers,我再一次用这个代码遇到了障碍。。。我发布了我以前的代码,这与以前有很大的不同,所以现在它正在改变,问题也在改变!所以我有一个函数 convertToHTML :: String -> String convertToHTML [] = [] --prevents calling head on empty line convertToHTML x | doubleHash x == True = "<h3>" ++ drop 2 x +

我再一次用这个代码遇到了障碍。。。我发布了我以前的代码,这与以前有很大的不同,所以现在它正在改变,问题也在改变!所以我有一个函数

 convertToHTML :: String -> String
 convertToHTML [] = [] --prevents calling head on empty line
 convertToHTML x
          | doubleHash x     == True     = "<h3>" ++ drop 2 x ++ "</h3>"
          | head x           == '#'      = "<h1>" ++ tail x ++ "</h1>"
          | x                == "---"    = "<hr/>"
          | otherwise                    = x
所以使用cons,仅仅说##就可以返回true。 不确定这里出了什么问题,但是当调用convertToHTML来运行doubleHash x时,它没有应用doubleHash==True的概念,所以在这一行打上H3标记!取而代之的是,它直接指向头部x,并将H1标记应用于两条线。。。 例:文本

-->#这应该是一条H1标记线

-->##这应该是一条H3标记线

然而,两者都被H1标签打了一巴掌。

'#':'#':[]
相当于
“##”
。换句话说,您正在检查整个字符串是否等于
“##”
。您可能需要检查字符串是否以
“##”
开头。在
Data.List
中,有一个方便的函数
isPrefixOf
可以测试这一点

> isPrefixOf "##" "## a string"
True
> isPrefixOf "##" "# another string"
False

只有当整个字符串为“###”时,
doubleHash
才会返回True
这一款可以满足您的任何需求:

 doubleHash ('#' : '#' : _) = True
 doubleHash _ = False
 doubleHash ('#' : '#' : _) = True
 doubleHash _ = False