2013-12-08 5 views
1

정확한 Typeclass 제약 조건을 사용하여 Yesod에 영구적으로 DB에 코드를 삽입하려는 함수에 대해 이해하려고합니다. 일을 구체적으로하기 위해 나는 다음과 같은 함수를 가지고있다 :Yesod에 대한 Typeclass 제약 영구 코드

addToDbReturnJson obj = do 
    runDB $ insert obj 
    returnJson obj 

나는 타입 서명이 무엇인지 알아 내려고하고있다. SomethingPersist는 무엇을해야> 처리기 값

- 나는

addToDBReturnJson : (ToJSON 발, SomethingPersist 발) => 발 같은 것을해야 확신? 나는 Persistent의 유형을 설명하는 문서를 지적하게되어 기쁩니다. 그러나 나는 Yesod 책에서 그것을 이해할 수 없었습니다.

+0

서명없이 보관하십시오. 컴파일러는 당신을 위해 그것을 추론 할만큼 똑똑합니다. –

+0

이 파일을 ghci로로드하고': t addToDbReturnJson'을 호출하여 어떤 컴파일러가 당신을 유추했는지 확인하십시오. – Ankur

+0

예, 현재 타입 서명이없고 작동하지만, 코드의 유형을 이해하려고합니다. 컴파일러 경고). 나는 ghci를 시도했고 그것은 나에게 정말로 이해할 수없는 8 가지를 준다. – triplepoint217

답변

1

이 없음 ME-

addToDbReturnJson::(ToJSON val, PersistEntity val, 
    (PersistEntityBackend val ~ PersistMonadBackend (YesodDB App)))=>val->Handler Value 

매우 직관적 인 작동하지만, 당신이 입력 값에 연결하는 데이터베이스가 동일한 데이터베이스로 지정해야 마지막 부분에서 같은 날에 보이는 그 처리기 사용 (.... 좋아, 내가 추측하는 말이).