2016-08-28 14 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
  • 型シグネチャを削除 - Haskellはそれを把握することができますよう、あなたはそれを必要としません。
+2

*タイプシグネチャを削除する - ハスケルが理解できるように、タイプシグネチャを削除する必要はありません。*タイプシグネチャをすべてのトップレベルバインディングに追加するのは良い方法です。 – Jubobs