我试图使用解析器组合器来解决问题.我尝试了以下方法:
注意:以下代码使用组合子库
styleParserItalic : Bool -> Parser ( List (List Char , Style))
styleParserItalic bolded =
let
style = if bolded then Italic else Unstyled
in
(end `andThen` always ( succeed ( [] )))
<|> (string "(!ITALIC!)" `andThen` \_ -> styleParserItalic ( not bolded ) )
<|> ( anyChar `andThen` \c -> styleParserItalic bolded `andThen` \cs -> succeed ((c :: [],style) :: cs) )
Run Code Online (Sandbox Code Playgroud)
我很难理解这个解析器是如何运行的,因为styleParserItalic在解析器成功之前调用解析器.
有人可以解释解析器在给出一串字符时是如何工作的吗?
如果有人对解析器的目的和完整代码感兴趣,这是我之前的问题.
这是迄今为止我所理解的
解析器将首先检查它是否是行的结尾,如果不是,它将尝试解析字符串,(!ITALIC!)如果情况那么它将使用参数True或false调用解析器(如果为false则将使其为真...)
如果解析器没有找到字符串(!ITALIC!),它将尝试解析任何字符,然后它将再次调用解析器.
令我困惑的是,解析器只要成功解析任何字符就会继续调用自己!
编辑:* …
使用runfromNetwork.Wai.Handler.Warp函数到服务器休息 api
run :: Port -> Application -> IO ()
Run Code Online (Sandbox Code Playgroud)
但是在执行post请求时,出现错误CORS header ‘Access-Control-Allow-Origin’。任何想法如何在仆人/haskell 中克服这个问题
我运行下面的快速排序Haskell函数(使用合并和排序算法):
qsort []=[]
qsort (x:xs) =
qsort smaller ++ [x] ++ qsort larger
where
smaller = [a | a <- xs , a<x ] -- edit
larger = [b | b <- xs , b>=x ]
Run Code Online (Sandbox Code Playgroud)
为了测试大量数据的运行时间,我运行以下代码:
qsort [100000,99999..0]
Run Code Online (Sandbox Code Playgroud)
它需要到现在为止40分钟,它仍在运行!即使是100,000的清单也不是那么大,所以:
我有一个字符串,我想把它写在多行,悬停我不想写下面的方式,因为它会很乏味
val = " lines 1 "
+ " lines +
....
Run Code Online (Sandbox Code Playgroud)
任何的想法?
在创建ELM页面并使用(elm-reactor)成功运行它之后,我编译它以生成js文件并使用浏览器打开它.
使用以下命令:elm-make pageName.elm --output target.js.
无论如何,target.js页面成功生成,但是当使用浏览器打开它时,它没有显示所需的结果,而是按照以下屏幕截图显示源代码
给定一个String列表,我想创建一个HTML div列表,以便将其注入视图中:我想知道函数签名应如下所示:
display : List String -> List Html div
Run Code Online (Sandbox Code Playgroud)
和功能体:
display model = case model of
[] -> []
(x::xs) -> div [][ text x] :: display xs
Run Code Online (Sandbox Code Playgroud)
当按照下面的方式在视图中嵌入上面的函数时(因为我知道 div函数将一个Html列表作为第二个参数div : List Attribute -> List Html -> Html)
view : Model -> Html Msg
view model = div []
[
input [ placeholder "write your post here" , onInput Change][]
, button [onClick Save ][text "save"]
,div [][ display model.lst ]
Run Code Online (Sandbox Code Playgroud)
编译时我收到以下错误:
The 2nd argument to …Run Code Online (Sandbox Code Playgroud) 我的意图是将转换bytestring到List of Word8Haskell中,以获得进入LSB为每个byte.
任何想法如何实现?