对于Haskell来说,我还很陌生,我正在尝试将帐户构造函数添加到列表中,然后根据帐号检查该列表并对其进行某些修改。 我知道如何在没有列表的情况下执行此操作,但是我不确定如何使用列表构造函数来执行此操作。我使用的是网络简单服务器,用户在其中输入帐号,然后将其转移到方法中。
这是我的谈话服务器。 (l)是“ 1975年公开赛”。在这里,“ Open”确定要使用的定义,“ 1975”是帐号。
talk :: Handle -> IO ()
talk h = loop
where loop = do
l <- hGetLine h
hPutStrLn h "Reply"
let ws = words l
case (head ws) of ("Open") -> open h ws
("Tranfer") -> transfer h ws
这是我的构造函数(我不是列表构造函数的用户)
data Account = Account
{ nameArian :: String
, namePres :: String
, accNum :: TVar Int
, accValueA :: TVar Float
, accValueP :: TVar Float
}
createAccount nA nP acc valA valP cR = do
valA' <- newTVar valA
valP' <- newTVar valP
return $ Account nA nP acc valA' valP'
data Lista = Lista { list :: TVar [Account]}
createList a = do
a' <- newTVar a
return $ Lista a'
此定义将开设一个帐户并将其添加到列表中
open :: Handle -> [String] -> IO ()
open h ws = do
let num = read (unwords (tail ws)) :: Int
accounts <- atomically . sequence $
zipWith3 createAccount ["Arian"] ["Pres"] [x] [0.0] [0.0] [0]
let accVar = accounts
accls <- atomically . sequence $
zipWith createList [accounts]
对不起,如果有点杂乱。