2014-12-14 1 views
0

나는 마크 다운을위한 추상 구문 트리의 일반 노드를 pandoc을 사용하여 링크 노드로 변환 할 때 다음을 가지고있다. :시작 하스켈 ​​- 점점 '유형'[문자] '(문자열, 문자열)'와 일치하지 않는다

import Text.Pandoc 
import Text.Pandoc.Walk (walk) 

test :: Block -> Block 
test (Plain xs) = Link xs "http://www.example.com/" "" 
test x = x 

readDoc :: String -> Pandoc 
readDoc = readMarkdown def 

writeDoc :: Pandoc -> String 
writeDoc = writeMarkdown def 

main :: IO() 
main = interact (writeDoc . walk test . readDoc) 

링크 등의 정의는 here입니다.

컴파일 할 때 5 행에 있습니다. Couldn't match type ‘[Char]’ with ‘(String, String)’ 표기법을 수정하려면 어떻게해야합니까? (저는 하스켈을 처음 사용합니다.)

답변

3

Link은 이 type Target = (String, String)으로 정의 된 [Inline] -> Target -> Inline입니다. 두 번째 매개 변수는 두 문자열의 튜플이어야합니다.

test :: Block -> Block 
test (Plain xs) = Link xs ("http://www.example.com/", "") 
test x = x 
+0

'[Inline] -> Target -> Inline' 유형이 아닙니까? 어떤 경우에는 끝까지 '블록'으로 돌아 가기 위해 조금 더해야 할 것입니다. –

+0

@DanielWagner, 나는'test (Plain xs) = Plain [Link xs ("http://www.example.com/", "")]'을 사용했다. – cm007

+0

@DanielWagner 당신 말이 맞습니다! – YellPika

관련 문제