11

有人提出了将 Literate Haskell 和 Markdown 结合起来的好主意。对我来说很有意义,所以我想尝试一下。但是 Haskell 不喜欢 Markdown '#' 标头语法:

Hello World

> main = putStrLn "hello, world"

作品...

$ runhaskell hello_world.lhs 
hello, world

尽管...

# Hello World #

> main = putStrLn "hello, world"

不...

$ runhaskell hello_world.lhs
hello_world.lhs:1:3: lexical error at character 'H'

有什么是合法的定义吗?Haskell 语法仅通过示例提及Literate Haskell,并没有暗示 Markdown 语法无效。

4

3 回答 3

5

第一列中的“#”会导致 GHCi 出现问题,即使代码块前后有空行也是如此。如果您使用的是 Pandoc,则可以通过为标题使用下划线来解决此问题。

你好世界
------------

> main = putStrLn“你好,世界”

这是一个已知问题:http ://hackage.haskell.org/trac/ghc/ticket/4836

于 2011-04-01T06:01:50.510 回答
4

读这个:

http://www.haskell.org/onlinereport/literate.html

它说为了避免错误,您需要在注释和代码之间留一个空白行。

于 2011-04-01T04:14:13.920 回答
0

我只将LHS 与 Pandoc 一起使用,但 Pandoc 确实指定鸟轨道分隔的块引用是段落级元素,并且 Pandoc markdown(和常规 markdown)中的段落确实需要在它们之前有一个空行。所以以下应该工作......

# Hello World #

> main = putStrLn "hello, world"
于 2011-04-01T04:13:02.950 回答