小编kha*_*mar的帖子

函数式编程:理解解析器组合

我试图使用解析器组合器来解决问题.我尝试了以下方法:

注意:以下代码使用组合子库

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!),它将尝试解析任何字符,然后它将再次调用解析器.

令我困惑的是,解析器只要成功解析任何字符就会继续调用自己!

编辑:* …

elm

5
推荐指数
1
解决办法
359
查看次数

仆人中缺少 CORS 标头“Access-Control-Allow-Origin”

使用runfromNetwork.Wai.Handler.Warp函数到服务器休息 api

run :: Port -> Application -> IO ()
Run Code Online (Sandbox Code Playgroud)

但是在执行post请求时,出现错误CORS header ‘Access-Control-Allow-Origin’。任何想法如何在仆人/haskell 中克服这个问题

haskell servant

5
推荐指数
1
解决办法
1066
查看次数

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的清单也不是那么大,所以:

  1. 我怎么能处理数十亿的数据?
  2. 是这种排序算法(合并和排序)花费更少的时间在其他语言,如C#,python ...这是一个haskell语言的问题
  3. 如何使用其复杂性预测算法的运行时间?

sorting algorithm haskell time-complexity

4
推荐指数
1
解决办法
375
查看次数

在X ++中用多行写字符串

我有一个字符串,我想把它写在多行,悬停我不想写下面的方式,因为它会很乏味

val = " lines 1 "
     + " lines +
     ....
Run Code Online (Sandbox Code Playgroud)

任何的想法?

x++ axapta

3
推荐指数
1
解决办法
1021
查看次数

ELM:将ELM页面编译为JS

在创建ELM页面并使用(elm-reactor)成功运行它之后,我编译它以生成js文件并使用浏览器打开它.

使用以下命令:elm-make pageName.elm --output target.js.

无论如何,target.js页面成功生成,但是当使用浏览器打开它时,它没有显示所需的结果,而是按照以下屏幕截图显示源代码

在此输入图像描述

elm

2
推荐指数
1
解决办法
1274
查看次数

ELM:在div第二个参数中嵌入(HTML列表)时出错

给定一个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)

elm

1
推荐指数
1
解决办法
1338
查看次数

Haskell:将bytestring转换为[word8]

我的意图是将转换bytestringList of Word8Haskell中,以获得进入LSB为每个byte.

任何想法如何实现?

haskell

0
推荐指数
1
解决办法
465
查看次数

标签 统计

elm ×3

haskell ×3

algorithm ×1

axapta ×1

servant ×1

sorting ×1

time-complexity ×1

x++ ×1