2016-08-28 5 views
-3
type Record=([Char],[Char],[Char],[Char],[Char]) 

createAccount::IO()->Record 
createAccount=do 
    putStrLn "Enter First Name" 
    fname<-getLine 
    putStrLn "Enter Last Name" 
    lname<-getLine 
    putStrLn "Enter State" 
    state<-getLine 
    putStrLn "Enter City" 
    city<-getLine 
    putStrLn "Enter House No." 
    hnum<-getLine 
    let hnumInt = read hnum :: Integer 
    putStrLn "Enter Contact" 
    contact<-getLine 
    return (fname,lname,state,city,contact) 
+0

점점이 ERRORTYPE 오류를 명시 적으로 바인딩 입력 *** 기간 :의 createAccount *** 유형 : IO ([샤아], [숯불], [숯불], [숯불], [숯불]) * ** 일치하지 않음 : IO() -> 기록 –

+0

집 번호를받을 이유가없는 것 같습니다. 'createAccount'는 그것을 사용하지 않습니다. – chepner

답변

4

에서 튜플을 반환하는 방법 오류 메시지가 createAccount에 대한 형식 서명이 실제로 있음을 말하고있다.

옵션을 수정합니다 :

  • 변경 유형 서명을 IO ([Char],[Char],[Char],[Char],[Char])에 (또는 equivalenly : IO Record를)
  • 이 유형의 서명을 제거 - 하스켈은 그것을 알아낼 수있는 당신이 그것을 필요로하지 않습니다.
+2

* 형식 시그니처를 제거하십시오 - 하스켈이 알아낼 수 있기 때문에 형식 시그니처를 제거 할 필요가 없습니다. * 모든 최상위 바인딩에 유형 시그니처를 추가하는 것이 좋습니다. – Jubobs