2011-04-01 2 views
11

Someone에는 Literate 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' 

거기에 정의가 있습니까? 합법적 인 것은 무엇입니까? 하스켈 구문은 예제로 Literate Haskell만을 언급하고 있으며, Markdown 구문을 암시하는 것은 유효하지 않습니다.

+0

죄송합니다 모든 ... 내가 거기 왜 명시적인 이유가 있다고 잊고, 내 게시물은 간결하게하려고 할 때 코드에서 빈 줄이 삭제 . 누락 된 선은 내 문제의 원인이 아닙니다. – Anm

답변

5

첫 번째 열에 '#'이 있으면 코드 블록 전후의 빈 줄이 있어도 GHCi에 문제가 발생합니다. Pandoc을 사용하는 경우 머리글에 밑줄을 사용하여이 문제를 해결할 수 있습니다.

 
Hello World 
----------- 

> main = putStrLn "hello, world" 

이 알려진 문제 : http://hackage.haskell.org/trac/ghc/ticket/4836

0

나는 단지 LHS with Pandoc을 사용했으나 Pandoc은 새 트랙 구분 된 블록 인용 부호가 단락 수준 요소이며 Pandoc markdown (및 일반 markdown) 단락 앞에 빈 줄이 필요하다고 지정합니다. 그래서 다음은

# Hello World # 

> main = putStrLn "hello, world" 
4

이 읽기 ​​... 작동합니다 :

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

그것은 당신의 의견과 코드 사이에 빈 줄이 필요 오류를 방지 할 수 있다고 말한다.

+1

특히 "*"실수로 ">"를 생략하는 경우를 캡처하려면 비어있는 주석 줄 옆에 프로그램 줄이 표시되는 오류가 있습니다. 비어있는 주석 줄은 비어있는 주석 줄 옆에만 표시됩니다. 공백 ". * imho 이것은 정말로 바보입니다.이 동작은 명령 줄 플래그 또는 기타를 통해 구성 가능해야합니다. –

관련 문제